二维数组:一维数组中的元素又是一个数组。
声明的语法:
数据类型 数组名[一维长度][二维长度];
int num[3][2];
注意:int[][2];正确
int[2][];错误
二维数组中: 一维可以省略,二维不能省略。
1.创建一个二维数组用于保存三个班级的学生信息:
int scores[3][3];//用于保存三个班级的学生信息,每个班级3个人。
int i,j;
//为一班学生的成绩赋值
scores[0][0]=10;
scores[0][1]=20;
scores[0][2]=30;p
//为二班学生的成绩赋值
scores[1][0]=40;
scores[1][1]=50;
scores[1][2]=60;
//为三班学生的成绩赋值
scores[2][0]=70;
scores[2][1]=80;
scores[2][2]=90;
//二维数组的遍历
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d ",scores[i][j]);
}
printf("
");
}
2.声明一个三行三列的二维数组,计算对角线的和:
int num[3][3];
int x,y,sum=0;
for(x=0;x<3;x++)
{
for(y=0;y<3;y++)
{
printf("请输入num[%d][%d]
",x,y);
scanf("%d",&num[x][y]);
if(x==y)
{
sum+=num[x][y];
}
}
printf("
");
}
printf("%d
",sum);
3.从键盘上输入9个整数,保存在二维数组中按数组原来位置输出第一行和第一列的所有元素之和:
int nums[3][3];
int i,j,sum=0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("请输入第%d行第%d列:",i+1,j+1);
scanf("%d",&nums[i][j]);
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d ",nums[i][j]);
//计算第一行和第一列所有元素之和
if(i==0||j==0)
{
sum+=nums[i][j];
}
}
printf(" ");
}
printf("第一行和第一列所有元素之和为%d:",sum);
4.求二维数组(3行3列)中最大元素值及其行列号:
int nums[3][3];
int i,j,z,y,sum=0,max;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("请输入第%d行第%d列:",i+1,j+1);
scanf("%d",&nums[i][j]);
}
}
max=nums[1][1];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d ",nums[i][j]);
if(nums[i][j]>max)
{
max=nums[i][j];
z=i;
y=j;
}
}
printf("
");
}
printf("最大的是%d,是第%d行%d列",max,z+1,y+1);
5.打印杨辉三角:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
分析:
1.声明一个二维数组用于保存杨辉三角中的数据 int nums[5][5];
2.第一列nums[i][0]和对角线上的数字(nums[i][i])为1。
3.除第一列和对角线上的数字之外,其余数字nums[i][j]=nums[i-1][j]+nums[i-1][j-1];
int nums[5][5];
//为第一列和对角线赋值为1
int i,j;
for(i=0;i<5;i++)
{
nums[i][0]=1;//为第一列上的元素赋值为1
nums[i][i]=1;//为对角线上的元素赋值为1
}
//为除第一列和对角线之外元素赋值
for(i=2;i<5;i++)
{
for(j=1;j<i;j++)
{
nums[i][j]=nums[i-1][j]+nums[i-1][j-1];
}
}
//遍历输出
for(i=0;i<5;i++)
{
for(j=0;j<=i;j++)
{
printf("%d ",nums[i][j]);
}
printf("
");
}