【例5.7】求一个3×3方阵主对角线元素之和。
程序内容如下:
1 #include<stdio.h>
2 int main()
3 {
4 int a[3][3];
5 int i,sum=0;
6 printf("Please input data:\n");
7 for(i=0;i<3;i++)
8 scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);
9 for(i=0;i<3;i++)
10 printf("%d%d%d\n",a[i][0],a[i][1],a[i][2]);
11 for(i=0;i<3;i++)
12 sum=sum+a[i][i];
13 printf("sum=%d\n",sum);
14 return 0;
15 }
程序结果如图5.8所示:
图5.8 例5.7程序结果图
【例题中关键问题说明】
用二维数组a[3][3]表示方阵,则s=a[0][0]+a[1][1]+a[2][2],即sum=sum+a[i][i](i=0,1,2)。
程序内容如下:
1 #include<stdio.h>
2 int main()
3 {
4 int i,j,a[2][3],b[3][2];
5 for(i=0;i<=1;i++)
6 for(j=0;j<=2;j++)
7 {
8 printf("a(%d,%d)=",i+1,j+1);
9 scanf("%d",&a[i][j]);
10 b[j][i]=a[i][j];
11 }
12 for(i=0;i<=2;i++)
13 {
14 for(j=0;j<=1;j++)
15 printf("%d\t",b[i][j]);
16 printf("\n");
17 }
18 return 0;
19 }
程序结果如图5.9所示:
图5.9 例5.8程序结果图
程序中用数组a、b表示了矩阵a及其转置矩阵b,数组元素的下标与用什么变量表示无关,与其值有关。&a[i][j]是取数组元素的地址。
【例5.9】学生成绩管理。某班某学期的成绩如表5-1所示,求每门课和每个学生的平均成绩。
表5-1 学生成绩管理表(www.xing528.com)
程序内容如下:
1 #include<stdio.h>
2 int main()
3 {
4 int m,n,i,j;
5 float a[35][10]={0};
6 printf("m,n=");
7 scanf("%d,%d",&m,&n);
8 for(i=1;i<=m;i++)
9 for(j=1;j<=n;j++)
10 {
11 printf("a[%d][%d]=",i,j);
12 scanf("%f",&a[i][j]);
13 }
14 for(i=1;i<=m;i++)
15 {
16 for(j=1;j<=n;j++)
17 a[i][n+1]=a[i][n+1]+a[i][j];
18 a[i][n+1]=a[i][n+1]/n;
19 }
20 for(j=1;j<=n;j++)
21 {
22 for(i=1;i<=m;i++)
23 a[m+1][j]=a[m+1][j]+a[i][j];
24 a[m+1][j]=a[m+1][j]/m;
25 }
26 for(i=1;i<=m+1;i++)
27 {
28 for(j=1;j<=n+1;j++)
29 printf("%10.2f",a[i][j]);
30 printf("\n");
31 }
32 return 0;
33 }
程序结果如图5.10所示:
图5.10 例5.9程序结果图
【例题中关键问题说明】
变量m,n分别表示学生数和课程数,成绩用二维数组a[m+2][n+2]表示,其中a[i][j]表示第i个学生的第j门课程的成绩(i=1,2,…,m;j=1,2,…,n),a[][]表示第个学生的平均成绩,[][]表示第门课程的平均成绩。
请分析,结果中a[m+1][n+1]元素的值是什么意思,哪来的值?
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。