实验内容
1.有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。
代码
1 # include <stdio.h>
2 # include <stdlib.h>
3 # define M 6
4 # define N 6
5 void average(float a[M][N]);
6 int main()
7 {
8 int x,y,z,sum;
9 float b[M][N]={{1,97,99,100},{2,95,94,99},{3,99,100,95},{4,98,99,100},{5,99,100,98}};
10 printf("\tChinese\tMath\tEnglish\tsum\tsumave\n");
11 average(b);
12 for(x=0;x<6;x++)
13 {
14 for(y=0;y<6;y++)
15 {
16 if(y==5)
17 {
18 printf("%.2f\t",b[x][y]);
19 }
20 else if(x==5)
21 {
22 printf("subave\t");
23 for(z=1;z<=3;z++)
24 {
25 printf("%.2f\t",b[x][z]);
26 }
27 exit(0);
28 }
29 else
30 {
31 printf("%.0f\t",b[x][y]);
32 }
33 }
34 printf("\n");
35 }
36 return 0;
37 }
38 void average(float a[M][N])
39 {
40 int x,y,sum;
41 for(y=1;y<4;y++)
42 {
43 sum=0;
44 for(x=0;x<5;x++)
45 {
46 sum+=a[x][y];
47 }
48 a[5][y]=sum/5.0;
49 }
50 for(x=0;x<5;x++)
51 {
52 sum=0;
53 for(y=1;y<4;y++)
54 {
55 sum+=a[x][y];
56 }
57 a[x][4]=sum;
58 a[x][5]=sum/3.0;
59 }
60 }
运行结果

2.求任意方阵每行、每列、两对角线上元素之和。
代码
1 # include <stdio.h>
2 int main()
3 {
4 int n,i,j;
5 printf("请输入方阵的行数\n");
6 scanf("%d",&n);
7 double a[n][n],x,c[n],d[n],diagonal1,diagonal2;
8 x=1;
9 for(i=0;i<n;i++)
10 {
11 c[i]=0;
12 d[i]=0;
13 }
14 for(i=0;i<n;i++)
15 {
16 for(j=0;j<n;j++)
17 {
18 a[i][j]=x++;
19 }
20 }
21 for(i=0;i<n;i++)
22 {
23 for(j=0;j<n;j++)
24 {
25 c[i]+=a[i][j];
26 d[j]+=a[i][j];
27 if(i==j)
28 {
29 diagonal1+=a[i][j];
30 }
31 if(i+j==n-1)
32 {
33 diagonal2+=a[i][j];
34 }
35 }
36 }
37 for(i=0;i<n;i++)
38 {
39 printf("第%d行的和是%.0lf\n",i+1,c[i]);
40 printf("第%d列的和是%.0lf\n",i+1,d[i]);
41 }
42 printf("两对角线的和分别为%.0lf,%.0lf",diagonal1,diagonal2);
43 return 0;
44 }
运行结果

实验总结
二维数组不能自动换行,需要手动添加换行符
来源:http://www.cnblogs.com/frf123456/p/6195565.html