初始化和打印方式:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void test()
{
//赋值打印方式
//1.
int arr[2][3];
arr[0][0] = 1;
arr[0][1] = 2;
arr[0][2] = 3;
arr[1][0] = 4;
arr[1][1] = 5;
arr[1][2] = 6;
//2.
int arr1[2][3] = {
{1,2,3},
{4,5,6},//最后一行末尾逗号可以省去
};
//3.
int arr2[2][3] = { 1,2,3,4,5,6 };
//4,行可以省,列不能省
//为初始化部分用0填补
int arr3[ ][3] = { 1,2,3,4,5,6,7 };
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
printf("%d ", arr3[i][j]);
}
printf("\n");
}
}
int main()
{
test();
return 0;
}
二维数组数组名:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void test()
{
//二维数组数组名
int arr[2][3] = {
{1,2,3},
{4,5,6}
};
//整个二维数组的大小
int num = sizeof(arr);
printf("%d\n", num);
//二维数组一行的大小
int num1 = sizeof(arr[0]);
printf("%d\n", num1);
//二维数组某一个元素的大小
int num2 = sizeof(arr[0][0]);
printf("%d\n", num2);
//获取行数和列数
int hang = sizeof(arr) / sizeof(arr[1]);
printf("行数:%d\n", hang);
int lie = sizeof(arr[1]) / sizeof(arr[1][1]);
printf("列数:%d\n", lie);
//获取二维数组首地址
printf("二维数组首地址:%d\n", arr);
printf("二维数组第一行首地址:%d\n", arr[0]);
printf("二维数组第二行首地址:%d\n", arr[1]);
printf("二维数组第一个元素首地址:%d\n", &arr[0][0]);
}
int main()
{
test();
return 0;
}
案例:求学生考试成绩
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//求学生考试成绩
void test()
{
//存放3学生三门功课成绩的二维数组
int score[3][3] = {
{90,93,85},
{84,95,89},
{95,82,94}
};
//存放三名学生姓名的二维数组
char name[3][20] = {
{"大忽悠"},
{"小忽悠"},
{"小朋友"}
};
//求出每位学生的平均成绩
int hang = sizeof(score) / sizeof(score[0]);
int lie = sizeof(score[0]) / sizeof(score[0][0]);
//外层循环算每位学生的平均成绩
for (int i = 0; i < hang; i++)
{
//算每位学生总成绩
int sum = 0;
//内层循环算出每位学生的总成绩
for (int j = 0; j < lie; j++)
{
sum += score[i][j];
}
//每次打印name二维数组一行的内容,每一行存放一串字符串,可以用%s直接读取
printf("学生姓名: %s\t 三门功课平均成绩:%d\n", name[i], sum / 3);
}
}
int main()
{
test();
return 0;
}