一维数组:
int arr[10]={1,2,3,4,5,6,7,8};
二维数组:
定义语法:
int arr[2][3]=
{2,5,8},{7,9,10};
int arr[3][5]={2,3,5,6,7},{2,6,7,8,9,1},{6,2,5,4,1,8}
打印:
for (i=0;i<3;i++) //行
{
for (j=0;j<5;j++)
{
printf("%d",arr[i][j]);
}
printf("\n");
}
int arr[4][3] = { {5,8,3},
{7,3,6},
{22,26,29},
{55,66,77},
};
for (size_t i = 0; i < 4; i++) //行
{
for (size_t j = 0; j < 3; j++) //列
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
两次循环分别打印行,且列打印一周再打第二行
二维数组大小:
数组大小:sizeof(arr);
一行大小:sizeof(arr)/sizeof(arr[0]);
一个元素大小:sizeof(arr[0][0]);
行数(总大小/一行的大小):sizeof(arr/sizeof(arr[0]));
列数:(一行的大小/一个的大小):sizeof(arr)/sizeof(arr[0])/sizeof(arr[0][0]);
地址合一:
printf("%p\n",arr); = =printf("%p\n",&arr[0][0]);
二维数组的初始化:
1.常规初始化:
int arr[3][5]={{2,6,5,7,4},{5,3,2,5,4}.{6,12,4,8,42}}
2.不完全初始化:
int arr[3][5]={{2,3},{5,2,3,6}{1,2,4,3}};//未被初始化的数值为0
int arr[10]={0}; //初始化一个 初值全为0的二维数组
int arr[3][5] = {2,3,4,5,6,77,85,65,4,45,2}; //系统分配行列
3. int arr[ ][ ] = {1,3,5,2,4}; //二维数组定义必须指定列值。
int arr[ ][2]={1,3,2,5,4,14}; //可以不指定行值
练习:求出5名学生三门功课的总成绩。一个学生
int scores[5][3];
int row = sizeof(scores) / sizeof(scores[0]);
int col = sizeof(scores[0]) / sizeof(scores[0][0]);
//获取5名学生的三门成绩
for (size_t i = 0; i < row; i++)
{
for (size_t j = 0; j < col; j++)
{
scanf_s("%d ",&scores[i][j]);
}
}
//求一个学生的总成绩
for (size_t i = 0; i < row; i++) //每个学生
{
int sum = 0;
for (size_t j = 0; j < col; j++) //每个学生的成绩
{
sum = scores[i][j];
}
printf("第%d个学生的总成绩为:%d\n",i+1,sum);
}
//
for (size_t i = 0; i < row; i++) //每个学生
{
int sum = 0;
for (size_t j = 0; j < col; j++) //每门功课的第几个学生
{
sum += scores[i][j];
}
printf("第%d门功课的总成绩为:%d\n", i + 1, sum);
}
多维数组:
三维数组:【层】【行】【列】
数组类型 数组名 【层】【行】【列】
int arr[2][2][4];
{ {71,42,36,47,95}
{11,22,33,44,55} },
{ {15,24,36,64,45}
{21,62,43,44,56} },
//注意第一个元素为0开始
//待证