首页 > 代码库 > 第十次作业
第十次作业
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:矩阵两对角线和相等......
第十次作业
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。