1.有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。
#include <stdio.h> int main() { int grade[5][3]={89,45,65,74,58,69,45,31,54,78,98,96,54,78,45},sum[5],i,j,sum1,h; double ave[5],ave1[3]; for(i=0;i<5;i++) { sum1=0; for(j=0;j<3;j++) { sum1+=grade[i][j]; } sum[i]=sum1; ave[i]=(double)sum1/3; } for(i=0;i<3;i++) { sum1=0; for(j=0;j<5;j++) { sum1+=grade[i][j]; } ave1[i]=(double)sum1/5; } printf(" 语文 数学 英语 总分 平均分 "); h=0; for(i=0;i<5;i++) { for(j=0;j<3;j++) { printf(" %d",grade[i][j]); h++; } printf(" %d",sum[i]); h++; printf(" %.3f",ave[i]); h++; if(h%5==0) printf(" "); } printf("平均分"); for(i=0;i<3;i++) { printf("%.3f ",ave1[i]); } return 0; }
2.求任意方阵每行、每列、两对角线上元素之和。
#include <stdio.h> int main() { int i,j,sum,num[20][20]={0},sumline[20],sumcolumn[20],sumdiagonal[2],b; printf("请输入方阵的边长:"); scanf("%d",&b); for (i=0;i<b;i++) { for(j=0;j<b;j++) { printf("请输入第%d行第%d列的数据:",i+1,j+1); scanf("%d",&num[i][j]); } } for (i=0;i<b;i++) { sum=0; for(j=0;j<b;j++) { sum+=num[i][j]; } sumline[i]=sum; } for (i=0;i<b;i++) { sum=0; for(j=0;j<b;j++) sum+=num[j][i]; sumcolumn[i]=sum; } for (i=0;i<b;i++) { sum=0; for(j=0;j<b;j++) { if(i==j) sum+=num[i][j]; } } sumdiagonal[0]=sum; sum=0; for (i=0;i<b;i++) { sum+=num[i][b-i]; } sumdiagonal[1]=sum; for (i=0;i<b;i++) { printf("第%d行之和为%d ",i+1,sumline[i]); } for (i=0;i<b;i++) { printf("每%d列之和为%d ",i+1,sumcolumn[i]); } for (i=0;i<1;i++) { printf("对角线之和为%d ",sumdiagonal[i]); } return 0; }
实验总结:1有必要的话 记得给函数中的数值初始化
2不同的编译环境之间是存在差异的 记得在不同的编译环境测试程序
3二维数组也是线性存储的