1.二维数组的基本概念和使用
二维数组:可以看做是一个特殊的一维数组,这个数组的每个元素又是一个一维数组。
二维数组的定义:
类型说明符 数组名[常量表达式1][常量表达式2]
其中常量表达式1代表第一维下标长度,常量表达式2表示第二维下标长度。
例如:int a[3][4]; // 说明了一个三行四列的数组,数组名为a,其下标变量的类型为整形。该数组的下标变量共有3*4个。
二维数组的初始化:
1.定义的同时初始化
1.1完全初始化
1.1.1将二维数组当做元素类型是数组的特殊一维数组:int a[2][3] = { {1,2,3}, {4,5,6}};
1.1.2连续赋值:int a[2][3] = {1,2,3,4,5,6};
1.1.3可以省略第一维:int a[][3] = { {1,2,3}, {4,5,6}}; int a[][3] = {1,2,3,4,5,6};
1.2部分初始化
int a[3][4] = {1};
int a[3][4] = { {1}, {2}, {3}}; // 这种写法第一维长度可以省略
int a[3][4] = {1,2,3,4,5};
2.先定义,后初始化
int a[3][4];
a[0][0] = 1;
二维数组的遍历:通过下标访问二维数组中的每一个元素。
二维数组的存储方式:
1.计算机会给二维数组分配一块连续的存储空间。
2.数组名代表数组的首地址,从首地址位置依次放入第1行、第二行……
3.每一行的存储方式:从行首地址开始,依次存储该行的第1个元素、第2个元素、第3个元素……
4.每个元素占用相同的字节数(取决于数组类型)
5.数组中元素之间的地址是连续的
实例:定义初始化一个二维数组,并遍历输出数组内容。
#include <stdio.h>
int main(int argc, const char * argv[]) {
// 定义并初始化一个二维数组
int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12};
// 用双重for循环打印出二维数组中每一个元素
for (int i = 0; i <3; i ++) { // 第一维有3个元素
for (int j = 0; j < 4; j ++) { // 第二维有4个元素
printf("%d\t", a[i][j]);
}
// 换行
printf("\n");
}
return 0;
}
2.二维数组的应用实例
1)一个学习小组有5个人,每个人有三门课的考试成绩。求每门课程的平均分和三门课的平均分。
#include <stdio.h>
int main(int argc, const char * argv[]) {
// 定义并初始化数组
int score[5][3] = {
{ 80,75,92},
{ 61,65,71},
{ 59,63,70},
{ 85,87,90},
{ 76,77,85}