7. 使用二维数组要注意的地方.
1). 关于二维数组的行数和列数
a. 在声明二维数组的时候 必须要指定行数和列数.
b. 并且这个行数和列数: 可以是变量、常量、宏、表达式.也可以是1也可以是0
行数和列数不能是小数、负数.
2). 关于二维数组的元素的默认值.
如果我们声明1个二维数组 没有为这个二维数组的元素.
这个二维数组的元素是有值的 值是1个垃圾值.
8. 二维数组的元素的初始化.
1). 全部初始化.
a. 先声明,再使用下标来初始化.
b. 在声明的同时,就初始化数组的每一个元素. *****
int arr[3][4] =
{
{10,20,30,40},//第0行的数据
{50,60,70,80},//第1行的数据
{90,100,110,120}//第2行的数据.
};
里面的大括弧,就表示1行.
10 20 30 40
50 60 70 80
90 100 110 120
c. 上面这种方式初始化的时候.可以省略行数. ********
int arr[][4] =
{
{10,20,30,40},//第0行的数据
{50,60,70,80},//第1行的数据
{90,100,110,120}//第2行的数据.
};
根据大括弧的个数,编译器来自动确定行数.
d. 直接省略里面的大括弧.编译器根据行数和列数自动判断哪些属于哪1行的.
int arr[3][4] = {10,20,30,40,50,60,70,80,90,100,110,120};
e. 上面的那种初始化方式 可以省略行数.编译器根据列数和数据的个数自动计算行数.
int arr[][4] = {10,20,30,40,50,60,70,80,90,100,110,120};
2). 部分初始化.
a. int arr[3][4] = {{10},{20},{30}};
初始化指定行的数据. 那么其他的元素就会被自动初始化为0.
10 0 0 0
20 0 0 0
30 0 0 0
b. int arr[3][4] = {10,20,30,40,50}; *****
按照顺序去初始化每1个元素 其他的元素的值就会被自动初始化为0
10 20 30 40
50 0 0 0
0 0 0 0
c. int arr[][4] = {10,20,30,40,50};
省略行数,自动根据后面的元素的个数来计算行.
其他的元素自动初始化为0
10 20 30 40
50 0 0 0
d. int arr[3][4] = {[1]={10,20,30,40},[2]={50,60,70,80}};
给指定的行初始化,其他的元素自动初始化为0
0 0 0 0
10 20 30 40
50 60 70 80
e. int arr[3][4] = {[0][1] = 20, [1][3] = 60};
给指定的元素赋值.其他的元素自动初始化为0
0 20 0 0
0 0 0 60
0 0 0 0
9. 案例.
某公司 有3个销售小组.每1组有4个人.
将上个月的每一个人的销售成绩保存起来.
1). 找出销售之王.
2). 求每1组的平均销售成绩.
10. 什么时候要使用二维数组?
特点:有行有列的表格. 当你有类似于表格形状的数据的时候.就可以使用二维数组.
5 10
2D 地图的游戏.
*/
#include <stdio.h>
#define ROW 3
#define COL 4
int main(int argc, const char * argv[])
{
int arr[3][4] =
{
{45,67,78,12},
{78,14,56,15},
{78,12,101,4}
};
int sum = 0;
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 4; j++)
{
sum += arr[i][j];
}
printf("第%d组的平均销售成绩是:%d万\n",i+1,sum/4);
sum = 0;
}
// int max = INT32_MIN;
//
// for(int i = 0; i < 3; i++)
// {
// for(int j = 0; j < 4; j++)
// {
// if(arr[i][j] > max)
// {
// max = arr[i][j];
// }
// }
// }
//
// printf("销售之王的销售成绩是:%d万\n",max);
//int arr[][4] = {10,20,30,40,50,60,70,80,90,100,110,120};
//
// int arr[][4] =
// {
// {10,20,30,40},//第0行的数据
// {50,60,70,80},//第1行的数据
// {90,100,110,120}//第2行的数据.
// };
//
// int row = 3;
// int col = 4;
// int arr[3][4];
//
// arr[0][0] = 10;
// arr[0][1] = 20;
// arr[0][2] = 30;
// arr[0][3] = 40;
//
// arr[1][0] = 100;
// arr[1][1] = 200;
// arr[1][2] = 300;
// arr[1][3] = 400;
//
//
// arr[2][0] = 1000;
// arr[2][1] = 2000;
// arr[2][2] = 3000;
// arr[2][3] = 4000;
//
for(int i = 0; i < 3; i++)//外层循环控制行数.
{
for(int j = 0; j < 4; j++)
{
printf("%d\t",arr[i][j]);
}
printf("\n");
}
// printf("%d\n",arr[1][2]);
return 0;
} |