首页 > 代码库 > 第十次作业
第十次作业
一、实验内容
1.有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。
#include <stdio.h> #define M 5 #define N 3 void readscore(int score[M][N]); int sumforstud(int score[M][N],int sum[]); double aveforstud(int score[M][N],double ave[]); double aveforcourse(int score[M][N],double ave[]); int main() { int score[M][N]; double ave[M]; int sum[M]; int i,j; readscore(score); sumforstud(score,sum); aveforstud(score,ave); printf("语文\t数学\t英语\t总分\t平均分\n"); for(i=0;i<M;i++) { for(j=0;j<N;j++) { printf(" %d\t",score[i][j]); } printf("%d\t",sum[i]); printf("%.2f\t",ave[i]); printf("\n"); } aveforcourse(score,ave); for(j=0;j<N;j++) { printf("%.2f\t",ave[j]); } printf("\n"); return 0; } //输入 void readscore(int score[M][N]) { int i,j; for(i=0;i<M;i++) { for(j=0;j<N;j++) { switch(j) { case 0: printf("输入第%d个学生的语文成绩:\n",i+1); scanf("%d",&score[i][j]); continue; case 1: printf("输入第%d个学生的数学成绩:\n",i+1); scanf("%d",&score[i][j]); continue; case 2: printf("输入第%d个学生的英语成绩:\n",i+1); scanf("%d",&score[i][j]); continue; } } } } //每个学生的总分 int sumforstud(int score[M][N],int sum[]) { int i,j; for(i=0;i<M;i++) { sum[i]=0; for(j=0;j<N;j++) { sum[i]=sum[i]+score[i][j]; } } } //每个学生的平均分 double aveforstud(int score[M][N],double ave[]) { int i,j,sum; for(i=0;i<M;i++) { sum=0; for(j=0;j<N;j++) { sum=sum+score[i][j]; } ave[i]=(double)sum/N; } } //各科平均分 double aveforcourse(int score[M][N],double ave[]) { int i,j,sum; for(j=0;j<N;j++) { sum=0; for(i=0;i<M;i++) { sum=sum+score[i][j]; } ave[j]=(double)sum/M; } }
2.求任意方阵每行、每列、两对角线上元素之和。
#include<stdio.h> #define N 6 #define M 6 int main() { int i,j,a[M][N],sum=0,diagonalsum1=0,diagonalsum2=0; for(i=0;i<M;i++) { for(j=0;j<N;j++) { a[i][j]=j+1; printf(" %d",a[i][j]); } printf("\n"); } for(i=0;i<M;i++) { sum=0; for(j=0;j<N;j++) { sum=sum+a[i][j]; } printf("每%d行的和为%d\n",i+1,sum); } for(j=0;j<N;j++) { sum=0; for(i=0;i<M;i++) { sum=sum+a[i][j]; } printf("每%d列的和为%d\n",j+1,sum); } diagonalsum1=0; for(i=0;i<M;i++) for(j=0;j<N;j++) if(i+j==M) { diagonalsum1=diagonalsum1+a[i][j]; } printf("对角线一的和为%d",diagonalsum1); diagonalsum2=0; for(i=0;i<M;i++) for(j=0;j<N;j++) if(i==j) { diagonalsum2=diagonalsum2+a[i][j]; } printf("对角线二的和为%d",diagonalsum2); return 0; }
二:实验总结
1:再给sum赋初值时没有付对,没有弄清怎样来进行for循环;
2:二维数组要注意是两层循环;
3:在用函数写程序没有弄不清主函数下面写那些输入的一些变量
还需要再加强一下怎样用函数来写程序
第十次作业
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。