3.二维数组
3.1.二维数组代码示例
请用二维数组输出如下图形
0 0 0 0 0 0
0 0 1 0 0 0
0 2 0 3 0 0
0 0 0 0 0 0
#include<stdio.h> void main() { int arr[4][6], i, j; for (i = 0; i < 4; i++) {//通过for循环将数组遍历,并给数组元素逐一赋值0 for (j = 0; j < 6; j++) { arr[i][j] = 0; } } arr[2][1] = 2; arr[2][3] = 3; arr[1][2] = 1; for (i = 0; i < 4; i++) { for (j = 0; j < 6; j++) { printf("%d ", arr[i][j]); } printf("\n"); } }
1.首先通过数组的遍历(第一个for循环中,外层for循环为行遍历,内层for循环为列遍历),将数组元素逐一赋值为0
2.后通过单一数组元素赋值,将某些元素赋值为特定的值
3.二维数组在计算机中的本质还是一位数组,他的地址是在前一个元素的地址上➕1个数组元素的单位大小(如果是int类型的数组,则➕4;如果是double类型,则➕8;如果是char类型则➕1,以此类推)
3.2.二维数组的使用方式
1.
类型 数组名[大小][大小] = {{值 1,值 2..},{值 1,值 2..},{值 1,值 2..}};
2.
类型 数组名[大小][大小] = { 值 1,值 2,值 3,值 4,值 5,值 6 ..};
3.3.二维数组的练习
- int arr[3][2]={{4,6},{1,4},{-2,8}};遍历该二维数组,并得到和
//int arr[3][2] = { {4,6},{1,4},{-2,8} }; 遍历该二维数组,并得到和 #include<stdio.h> void main() { int arr[3][2] = { {4,6},{1,4},{-2,8} }; int i, j, sum = 0; for (i = 0; i < 3; i++) {//行遍历 for (j = 0; j < 2; j++) {//列遍历 sum += arr[i][j];//设置一个变量记录每次变量的元素的和 } } printf("该数组全部元素的和为%d", sum); }
2.定义二维数组,用于保存三个班,每个班五名同学成绩,并求出每个班级平均分、 以及所有班级平均分
//定义二维数组,用于保存三个班,每个班五名同学成绩,并求出每个班级平均分、 以及所有班级平均分 #include<stdio.h> void main() { double arrScore[3][5], score = 0.0, classScore = 0.0, totalScore = 0.0; int i, j; for (i = 0; i < 3; i++) {//行遍历 printf("\n"); for (j = 0; j < 5; j++) {//列遍历 printf("请输入%d班%d号同学的成绩", i +1, j + 1); scanf_s("%lf", &arrScore[i][j]);//将成绩存入数组中 } } for (i = 0; i < 3; i++) { classScore = 0.0;//每次列遍历前需要将classScore归零 for (j = 0; j < 5; j++) { printf("\n%d班%d号同学的成绩为:%.2f", i + 1, j + 1, arrScore[i][j]); classScore += arrScore[i][j];//统计得到班级的总成绩 } totalScore += classScore;//每次列遍历后得到全部的总成绩 classScore /= 5;//得到班级的平均成绩 printf("\n%d班的平均分为:%.2f:", i + 1, classScore); } totalScore /= 15;//得到全部的平均成绩 printf("\n所有班级的平均分为:%.2f", totalScore); }
3.4.二维数组使用细节和注意事项
- 可以只对部分元素赋值,未赋值的元素自动取“零”值
#include<stdio.h> void main() { int arr[2][3] = { {1}, {2} }, i, j; for (i = 0; i < 2; i++) { for (j = 0; j < 3; j++) { printf("%d\t", arr[i][j]); } printf("\n"); } }
2.如果对全部元素赋值,那么第一维的长度可以不给出
#include<stdio.h> void main() { int arr[][3] = { 1, 2, 3, 4, 5, 6}, i, j; for (i = 0; i < 2; i++) { for (j = 0; j < 3; j++) { printf("%d\t", arr[i][j]); } printf("\n"); } }
3.二维数组可以看作是由一维数组嵌套而成的;如果一个数组的每个元素又是一个数组,那么它就是二维数组。例如:二维数组 a[3][4]可看成三个一维数组,它们的数组名分别为 a[0]、a[1]、a[2]。这三个一维数组都有 4 个元素,如,一维数组 a[0] 的元素为 a[0][0]、a[0][1]、a[0][2]、a[0][3]