第十次作业
Posted 燕超
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十次作业相关的知识,希望对你有一定的参考价值。
1.有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。
#include <stdio.h> #define M 5 #define N 3 void inscore(int score[M][N]); //void outscore(int score[M][N]); void insum(int score[M][N],int sum[M]); void outsum(int sum[],int n); void inmus(int score[M][N],int mus[M]); double ave(int sum[M],double gerenaver[M]); double aver(int mus[M],double gekeaver[M]); int main() { int score[M][N],sum[M],mus[M]; int i,g; double gerenaver[M],gekeaver[N]; inscore(score); // outscore(score); insum(score,sum); // outsum(sum,M); ave(sum,gerenaver); inmus(score,mus); aver(mus,gekeaver); printf("\\t数学\\t英语\\t语文\\t总分\\t平均分\\n"); for(i=0;i<M;i++) { printf("学生%d",i+1); for(g=0;g<N;g++) { printf(" \\t %d ",score[i][g]); } printf("\\t %d\\t %.2f",sum[i],gerenaver[i]); printf("\\n"); } printf("平均分"); for(i=0;i<N;i++) { printf("\\t %.2f",gekeaver[i]); } return 0; } void inscore(int score[M][N]) //???? { int i,g; for(i=0;i<M;i++) { printf("请输入第%d个学生的成绩:\\n",i+1); for(g=0;g<N;g++) { scanf("%d",&score[i][g]); } } }/* void outscore(int score[M][N]) { int i,g; for(i=0;i<M;i++) { for(g=0;g<N;g++) { printf("%4d",score[i][g]); } } }*/ void insum(int score[M][N],int sum[M]) //?????? { int i,g; for(i=0;i<M;i++) { sum[i]=0; for(g=0;g<N;g++) { sum[i]=sum[i]+score[i][g]; } } }/* void outsum(int sum[],int n) { int i; for(i=0;i<n;i++) { printf("%d",sum[i]); } }*/ double ave(int sum[M],double gerenaver[M]) //????? { int i; for(i=0;i<M;i++) { gerenaver[i]=(double)sum[i]/3; } } void inmus(int score[M][N],int mus[M]) //?????? { int i,g; for(i=0;i<N;i++) { mus[i]=0; for(g=0;g<M;g++) { mus[i]=mus[i]+score[g][i]; } } } double aver(int mus[M],double gekeaver[M]) //????? { int i,g; for(i=0;i<N;i++) { gekeaver[i]=0; gekeaver[i]=(double)mus[i]/5; } } /* double aver(int mus[M],double gekeaver[M]) //????? { int i,g; for(i=0;i<N;i++) { gekeaver[i]=0; for(g=0;g<M;g++) { gekeaver[i]=(double)mus[i]/5; } } }*/
2.求任意方阵每行、每列、两对角线上元素之和
#include <stdio.h> #define M 3 #define N 3 int main() { int i,g,square[M][N],sumM[M],sumN[N],sumz=0,sumy=0; printf("请输入九个数:\\n"); for(i=0;i<M;i++) { for(g=0;g<N;g++) { scanf("%d",&square[i][g]); } } for(i=0;i<M;i++) { sumM[i]=0; sumN[i]=0; for(g=0;g<N;g++) { sumM[i]+=square[i][g]; sumN[i]+=square[g][i]; } } printf("\\n"); for(i=0;i<M;i++) { printf("方阵第%d行和为%d\\n",i+1,sumM[i]); } printf("\\n"); for(i=0;i<M;i++) { printf("方阵第%d列和为%d\\n",i+1,sumN[i]); } for(i=0,g=0;i<M,g<N;i++,g++) { sumz+=square[i][g]; } printf("\\n"); printf("方阵左上到右下的对角线上的数和为%d\\n",sumz); for(i=0,g=N-1;i<M,g>=0;i++,g--) { sumy+=square[i][g]; } printf("方阵右上到左下的对角线上的数和为%d\\n",sumy); return 0; }
实验总结:
1:二维数组,sum[i][g]进行行列运算时,注意i和g的位置。实验一在做各科平均分时就把i和g弄反了,结果各科平均分算出来是一个数。
2:
double ave(int sum[M],double gerenaver[M]);
ave(sum,gerenaver);
3:函数若无返回值,且在下次函数中要用到,则要将其带入新函数中
4:矩阵两对角线和相等......
以上是关于第十次作业的主要内容,如果未能解决你的问题,请参考以下文章