第十次作业
2016-12-11 15:38 魏振川 阅读(139) 评论(1) 编辑 收藏 举报1.有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。
#include<stdio.h> int main() { int score[5][3]={{70,70,80},{70,70,60},{70,70,90},{80,80,70},{70,70,70}},i,j,sum,sum1[5],h,sum2; float ave[5],average,ave1[3]; for(i=0;i<5;i++) { sum=0; for(j=0;j<3;j++) { sum+=score[i][j]; } average=sum/3; sum1[i]=sum; ave[i]=average; } for(i=0;i<3;i++) { sum2=0; for(j=0;j<5;j++) { sum2+=score[i][j]; } ave1[i]=sum2/3; } printf(" 语文 数学 英语 总分 平均分\n"); h=0; for(i=0;i<5;i++) { for(j=0;j<3;j++) { printf(" %d",score[i][j]); h++; } printf(" %d",sum1[i]); h++; printf(" %.3f",ave[i]); h++; if(h%5==0) printf("\n"); } printf("平均分"); for(i=0;i<3;i++) { printf("%.3f ",ave1[i]); } return 0; }
2.求任意方阵每行、每列、两对角线上元素之和。
#include<stdio.h> int main() { int a,i,j,shu[20][20],sum1[20],sum2[20],sum3,sum4,sum; printf("请输入矩阵边长:"); scanf("%d",&a); for(i=0;i<a;i++) { for(j=0;j<a;j++) { printf("请输入第%d行第%d列的数据",i+1,j+1); scanf("%d",&shu[i][j]); } } for(i=0;i<a;i++) { sum=0; for(j=0;j<a;j++) { sum+=shu[i][j]; } sum1[i]=sum; } for(i=0;i<a;i++) { sum=0; for(j=0;j<a;j++) sum+=shu[j][i]; sum2[i]=sum; } sum=0; for(i=0;i<a;i++) { for(j=0;j<a;j++) { if(i==j) sum+=shu[i][j]; } } sum3=sum; sum=0; j=a-1; for(i=0;i<a;i++) { sum=sum+shu[i][j]; j--; } sum4=sum; for(i=0;i<a;i++) { printf("第%d行之和为%d\n",i+1,sum1[i]); } for(i=0;i<a;i++) { printf("第%d列之和为%d\n",i+1,sum2[i]); } printf("对角线之和为:%d %d",sum3,sum4); return 0; }
实验总结:
1二维数组也是线性存储的。
2.在输出表格形式的数据时灵活使用二维数组。
3.多次求和,注意每次重新求和时给sum赋初值。