首页 > 代码库 > 第十次作业

第十次作业

实验内容

 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 }

运行结果

技术分享

实验总结

二维数组不能自动换行,需要手动添加换行符

 

第十次作业