第十次作业
1.有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。
#include<stdio.h> #define N 3 #define M 5 void readScore(int score[M][M]); void aveforStud(int score[M][M],double ave[M][M]); void aveforCourse(int score[M][M],double asd[4]); int main() { int score[M][M],i,j; double ave[M][M],asd[4]; readScore(score); aveforStud(score,ave); printf(" 语文 数学 英语 总分 平均分\n"); for(i=0;i<M;i++) { for(j=0;j<4;j++) { printf(" %8d",score[i][j]); } printf("% 8.2f\n",ave[i][4]); printf("\n"); } aveforCourse(score,asd); printf("平均分"); for(i=0;i<4;i++) { printf("%7.2f ",asd[i]); } } void readScore(int score[M][M]) { int j,i,sum=0; printf("输入成绩"); for(i=0;i<M;i++) { sum=0; printf("输入第%d个学生的成绩\n",i+1); for(j=0;j<N;j++) { scanf("%d",&score[i][j]); sum+=score[i][j]; } score[i][3]=sum; } } void aveforStud(int score[M][M],double ave[M][M]) { int i; for(i=0;i<M;i++) { ave[i][4]=score[i][3]/3.0; } } void aveforCourse(int score[M][M],double asd[4]) { int i,j,sum; for(i=0;i<4;i++) { sum=0; for(j=0;j<5;j++) { sum+=score[j][i]; } asd[i]=sum/5.0; } }
2.求任意方阵每行、每列、两对角线上元素之和。
#include<stdio.h> #define N1 100 #define N2 100 int main() { int zhen[N1][N2],n1,i,j,sum; printf("请输入方阵的行数:"); scanf("%d",&n1); for(i=0;i<n1;i++) { printf("请输入第%d行的数\n",i+1); for(j=0;j<n1;j++) { scanf("%d",&zhen[i][j]); } } for(i=0;i<n1;i++) { printf("\n"); for(j=0;j<n1;j++) { printf(" %d ",zhen[i][j]); } } for(i=0;i<n1;i++) { sum=0; for(j=0;j<n1;j++) { sum+=zhen[i][j]; } printf("\n方阵第%d行的和为:%d",i+1,sum); } for(j=0;j<n1;j++) { sum=0; for(i=0;i<n1;i++) { sum+=zhen[i][j]; } printf("\n方阵第%d列的和为:%d",j+1,sum); } sum=0; for(i=0;i<n1;i++) { for(j=0;j<n1;j++) { if(i==j) { sum+=zhen[i][j]; } } } printf("\n对角线元素之和为%d",sum); sum=0; for(i=0;i<n1;i++) { for(j=0;j<n1;j++) { if(i+j==n1-1) sum+=zhen[i][j]; } } printf("\n对角线元素之和为%d",sum); return 0; }
实验总结:
1、注意循环嵌套
2、测试时可以先用简单的数进行测试
3、\b为退格 1字符长度 \t 4个字符