第十次作业
一、实验内容
1、实验要求:有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。
代码:
#include<stdio.h> #define N 5 #define M 3 int main() { int fen[N][M]={{100,99,98},{97,96,95},{94,93,92},{91,90,89},{88,87,86}},sum1,sum2,i,j,a=0; double ave1,ave2,b=0,c=0,d=0; printf("\t语文 数学 英语 总分 平均分\n\t"); sum1=0; sum2=0; ave1=0; ave2=0; for(i=0;i<N;i++) { for(j=0;j<M;j++) { printf("%d\t",fen[i][j]); a++; sum1=sum1+fen[i][j]; ave1=sum1/3; if(a%3==0) { printf("%d\t%.2lf\n\t",sum1,ave1); sum1=0; } if(j==0) { b=b+fen[i][j]; } if(j==1) { c=c+fen[i][j]; } if(j==2) { d=d+fen[i][j]; } } } printf("\n平均分\t%.2f\t%.2f\t%.2f",b/5,c/5,d/5); return 0; }
程序运行结果:
2.求任意方阵每行、每列、两对角线上元素之和。
代码:
#include<stdio.h> # define N 3 int main() { int a[N][N]={{5,9,4},{11,9,6},{1,9,7}}; int i,j,hang1=0,hang2=0,hang3,lie1=0,lie2=0,lie3,dui1=0,dui2=0; for(i=0;i<N;i++) { for(j=0;j<N;j++) { printf("%d\t",a[i][j]); } printf("\n"); } for(i=0;i<N;i++) { hang1+=a[0][i]; hang2+=a[1][i]; hang3+=a[2][i]; lie1+=a[i][0]; lie2+=a[i][1]; lie3+=a[i][2]; dui1+=a[i][i]; dui2+=a[i][N-1-i]; } printf("第一行是%d\n第二行是%d\n第三行是%d\n第一列是%d\n第二列是%d\n第三列是%d\n左对角线是%d\n右对角线是%d\n",hang1,hang2,hang3,lie1,lie2,lie3,dui1,dui2); return 0; }
程序运行结果:
二、实验总结(实验中遇到的问题及解决方法)
1、减少判断和赋值来节省运行时间。
2、二维数组的存储是以一维数组的形式进行存储与输出。
3、在程序中使用数组时不能越界(超出数组的定义长度);
4、测试时可以先用简单的数进行测试
5、在输出表格形式的数据时使用二维数组。