1.有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。
#include <stdio.h> int sum(int score[5][3],double ave[]); int main() { int score[5][3]={{10,20,30},{10,20,30},{10,20,30},{10,20,30},{10,20,30}}; int i,j,sum1,sum2,sum[5]; double ave1[5],ave2[3]; printf(" 语文 数学 英语 总分 平均分 "); for(i=0;i<5;i++) { sum1=0; for(j=0;j<3;j++) { sum1+=score[i][j]; sum[i]=sum1; } sum[i]=sum1; ave1[i]=(double)sum1/3; } for(j=0;j<3;j++) { sum2=0; for(i=0;i<5;i++) { sum2+=score[i][j]; } ave2[j]=(double)sum2/5; } for(i=0;i<5;i++) { printf("第%d名同学",i+1); for(j=0;j<3;j++) { printf("%d ",score[i][j]); } printf("%d %.1f ",sum[i],ave1[i]); } printf("平均分 "); for(i=0;i<5;i++) { printf("%.1f ",ave2[i]); } printf(" "); return 0; }
2.求任意方阵每行、每列、两对角线上元素之和。
# include <stdio.h> # define M 50 int main() { int i,j,m,sum1,sum2,sum3,sum4,sum[M][M]; printf("输入方阵的长度 "); scanf("%d",&m); for(i=0;i<m;i++) { printf("请输入第%d行的数字: ",i+1); for(j=0;j<m;j++) { scanf("%d",&sum[i][j]); } } for(i=0;i<m;i++) { sum1=0; for(j=0;j<m;j++) { sum1+=sum[i][j]; } printf("第%d行的和为:%d ",i+1,sum1); } for(j=0;j<m;j++) { sum2=0; for(i=0;i<m;i++) { sum2+=sum[i][j]; } printf("第%d列的和为:%d ",j+1,sum2); } sum3=0; sum4=0; for(i=0;i<m;i++) { sum3+=sum[i][i]; sum4+=sum[i][m-1-i]; } printf("对角线之和为%d %d ",sum3,sum4); return 0; }
实验总结:二维数组的存储是以一维数组的形式进行存储与输出;
注意赋值;
下标值应在已定义的数组大小的范围内;
注意数组不要越界。