5.6 嵌套循环和二维数组
二维数组:
int maxtemp [4][5];
这声明意味着maxtemp是一个包含4个元素的数组,每个元素都是一个由5个整数组成的数组。(4行,每行5个值)
表达式 maxtemp[0]是maxtemp数组的第一个元素,因此maxtemp[0]本身就是一个由5个int组成的数组。maxtemp[0]数组的第一个元素是maxtemp[0][0],该元素是一个int。
若要打印数组的所有内容,可以用嵌套循环:
for (int row=0;row<4;row++)
{
for (int col=0;col<5;col++)
{
cout<<maxtemp[raw][col]<<"\t";
}
cout << endl;
}
5.6.1初始化二维数组
初始化一维数组:
int bus[4]={1,2,3,4};
初始化二维数组:
int maxtemp[4][5]=
{
{1,2,3,4,,5},
{2,3,4,5,6},
{3,4,5,6,7},
{4,5,6,7,8}
};
初始化通过列表来赋值,maxtemp用{{},{},{},{}}来赋值,每个元素是一个{}。
5.6.2 example
#include <iostream>
const int Cities = 5;
const int Years = 4;
int main()
{
using namespace std;
const char *cities[Cities] =
{
"A",
"B",
"C",
"D",
"E"
};//*cities[0] = *"A" = A(是说明字符串是地址(首字符的地址),用*解析出来就是char型)
int maxtemp[Years][Cities] =
{
{1,2,3,4,5},
{2,3,4,5,6},
{3,4,5,6,7},
{4,5,6,7,8}
};
cout<<"Maximum temperatures for 2008-2011\n\n";
for (int city=0;city<Cities;city++)
{
cout<< cities[city]<<" :\t";
for (int year = 0;year<Years;++year)
{
cout<<maxtemp[year][city]<<" \t";
}
cout <<endl;
}
return 0;
}
上述例子中cities使用的是字符串指针数组,cities[0] = “A”,表示:cities[0]是一个char型地址为“A”的首字符的地址。
也可以使用char数组:
char cities[Cities][25] =
{
"A",
"B",
"C",
"D",
"E"
};//cities[0][0]是char
还可以使用string类:
const string cities[Cities] =
{
"A",
"B",
"C"
};
Test
7
#include <iostream>
#include <string>
#include "func_head.h"//当前目录寻找,<>是在系统中找
const int Size = 20;
const int Len = 20;
void han8()
{
using namespace std;
cout << "Enter words(to stop, type the word done):" << endl;
char word[Size];
int sum = 0;
cin >> word;//cin给字符数组录入时,遇到空白(空格,制表,回车)会停止,下一输入将跳过空白!!!
while (strcmp(word, "done"))
{
sum++;
cin >> word;
}
cout << "you entered a total of " << sum << " words.\n";
system("pause");
}