C语言二维数组 int arr[2][3]
Posted DQ_CODING
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言二维数组 int arr[2][3]相关的知识,希望对你有一定的参考价值。
基础使用
先遍历行再遍历列
#include<stdio.h>
//二维数组的基本使用
int main()
{
//二维数组的初始化
int arr1[2][2]={{2,2},{0,0}};
int arr2[2][3]={2,2,2,8,8,8};
int arr3[6][9];
int i,j;
for(i=0;i<6;i++)
{
for(j=0;j<9;j++)
{
arr3[i][j]=1;
}
}
arr3[2][5]=0;
//打印
printf("arr1:\\n");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
printf("%d ",arr1[i][j]);
}
printf("\\n");
}
printf("arr2:\\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("%d ",arr2[i][j]);
}
printf("\\n");
}
printf("arr3:\\n");
for(i=0;i<6;i++)
{
for(j=0;j<9;j++)
{
printf("%d ",arr3[i][j]);
}
printf("\\n");
}
getchar();
return 0;
}
内存布局
元素的地址连续分布,每一个元素在前一个的基础上加4(int)
#include<stdio.h>
//二维数组的内存布局
int main()
{
//二维数组的初始化
int arr[2][2]={{2,2},{0,0}};
int i,j;
//打印
printf("arr1:\\n");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
printf("%d ",arr[i][j]);
}
printf("\\n");
}
//打印首地址
printf("arr的首地址:%p\\n",arr);
printf("arr[0]的地址:%p\\n",arr[0]);
printf("arr[0][0]的地址:%p\\n",&arr[0][0]);
//打印所有地址
printf("所有地址:\\n");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
printf("arr[%d][%d]的地址:%p\\t",i,j,&arr[i][j]);
}
printf("\\n");
}
getchar();
return 0;
}
//输出:
//arr1:
//2 2
//0 0
//arr的首地址:0055F7F0
//arr[0]的地址:0055F7F0
//arr[0][0]的地址:0055F7F0
//所有地址:
//arr[0][0]的地址:0055F7F0 arr[0][1]的地址:0055F7F4
//arr[1][0]的地址:0055F7F8 arr[1][1]的地址:0055F7FC
行和列
#include<stdio.h>
int main()
{
int arr[2][3]={{2,6,8},{3,0,1}};
//sizeof(arr):2x3x4=24 整个二维数组的字节
//sizeof(arr[0]):3x4=12 第一行的字节
//行:
int row=sizeof(arr)/sizeof(arr[0]);//24/12=2
//列:
//sizeof(arr[0]):3x4=12 第一行的字节
int col=sizeof(arr[0])/sizeof(int);//12/4=3
printf("行:%d 列:%d",row,col);
getchar();
return 0;
}
案例:计算平均成绩
方式1:
#include<stdio.h>
int main()
{
double student[3][5];
int row=sizeof(student)/sizeof(student[0]);
int col=sizeof(student[0])/sizeof(double);
int i,j;
double s1=0,s2=0,s3=0,s=0;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
scanf("%lf",&student[i][j]);
s+=student[i][j];
}
}
for(j=0;j<col;j++)
{
s1+=student[0][j];
s2+=student[1][j];
s3+=student[2][j];
}
printf("所有班的平均成绩:%.2f\\n",s/(row*col));
printf("1班的平均成绩:%.2f\\n",s1/col);
printf("2班的平均成绩:%.2f\\n",s2/col);
printf("3班的平均成绩:%.2f\\n",s3/col);
getchar();//enter
getchar();
return 0;
}
方式2:
#include<stdio.h>
int main()
{
double student[3][5];
int row=sizeof(student)/sizeof(student[0]);
int col=sizeof(student[0])/sizeof(double);
int i,j;
double a=0,s=0;
for(i=0;i<row;i++)
{
a=0;
for(j=0;j<col;j++)
{
scanf("%lf",&student[i][j]);
a+=student[i][j];
s+=a;
}
printf("%d班的平均成绩:%.2f\\n",i+1,a/col);
}
printf("所有班的平均成绩:%.2f\\n",s/(row*col));
getchar();//enter
getchar();
return 0;
}
注意事项
以上是关于C语言二维数组 int arr[2][3]的主要内容,如果未能解决你的问题,请参考以下文章