首页 > 代码库 > 第十次作业
第十次作业
1.有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。
#include<stdio.h> #define N 5 #define M 6 #define L 3 int main() { int i,j,sumi,sumii,flag; double score[N][M]={{1,90,80,70},{2,82,75,95},{3,66,78,90},{4,68,95,88},{5,64,82,96}},average[L]={0}; printf(" 语文 数学 英语 总 分 平均分\n"); for(i=0;i<5;i++) { sumi=0; for(j=1;j<6;j++) { sumi+=score[i][j]; } score[i][4]=sumi; score[i][5]=(double)sumi/3; } for(i=0;i<5;i++) { for(j=0;j<6;j++) { printf(" % .lf ",score[i][j]); } printf("\n"); } flag=0; for(j=1;j<4;j++) { sumii=0; for(i=0;i<5;i++) { sumii+=score[i][j]; } average[flag]=(double)sumii/5; flag++; } printf("平均分 "); for(i=0;i<3;i++) { printf("% .lf ",average[i]); } return 0; }
2.求任意方阵每行、每列、两对角线上元素之和。
#include<stdio.h> #define N 10 #define M 10 int main() { int series[N][M]={{1,2,3},{4,5,6},{7,8,9}},i,j,sum1,sum2,sum3=0,sum4=0; for(i=0;i<3;i++) { for(j=0;j<3;j++) { printf("%5d",series[i][j]); } printf("\n"); } for(i=0;i<3;i++) { sum1=0; for(j=0;j<3;j++) { sum1+=series[i][j]; } printf("第%d行的和是%d\n",i+1,sum1); } for(j=0;j<3;j++) { sum2=0; for(i=0;i<3;i++) { sum2+=series[i][j]; } printf("第%d列的和是%d\n",j+1,sum2); } for(i=0;i<3;i++) { for(j=0;j<3;j++) { if(j==i) { sum3+=series[i][j]; } } } printf("由左至右的对角线之和是:%d\n",sum3); for(j=2;j>=0;j--) { for(i=0;i<3;i++) { if(i+j==2) sum4+=series[i][j]; } } printf("由右至左的对角线的和为:%d\n",sum4); return 0; }
实验总结:开始的时候,我想把数组的平均分还有总分直接存好,最后直接输出二维数组即可,可是后来考虑到每学科
的平均分需要有汉字提示,所以就又用了一个一维数组,格式对齐挺烦的,我没有做万年历的那个附加题,所以有些没
头绪,然后为了看起来更清楚,我把平均分没有保留小数位,呃呃呃,还算整齐。不过,有一个事情挺搞笑,我以为二
维数组输出的时候就是表格形式,结果,是我想多了······
知识点总结:1.二维数组的赋值和一维数组有相似的地方,但应注意,定义二维数组时,第一维的长度可以不指定,但
第二维的长度不能省。
2.C语言中二维数组是按行存储的。
3.a[6][7]——>第一个方括号表示行,第二个表示列。
第十次作业
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。