1.有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。
#include <stdio.h> int main() { int score[5][3]={{60,60,60},{50,50,50},{70,70,70},{80,80,80},{90,90,90}}; int j,i,suma,sumb,SUMA[5]; double avea[5],aveb[3]; printf(" 语文 数学 英语 总分 平均分 "); for(i=0;i<5;i++)//个人平均分最大值 { suma=0; for(j=0;j<3;j++) { suma+=score[i][j]; SUMA[i]=suma; } SUMA[i]=suma; avea[i]=(double)suma/3; } for(j=0;j<3;j++)//学科平均分 { sumb=0; for(i=0;i<5;i++) { sumb+=score[i][j]; } aveb[j]=(double)sumb/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 ",SUMA[i],avea[i]); } printf(" 平均分:"); for(i=0;i<3;i++) { printf("%.1f ",aveb[i]); } printf(" "); return 0; }
2.求任意方阵每行、每列、两对角线上元素之和。
#include <stdio.h> int main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}},suma[3],sumb[3],num[2]; int i,j,sum,numa=0,numb=0; printf("array a: "); for(i=0;i<3;i++) { for(j=0;j<3;j++) { printf("%5d",a[i][j]); } printf(" "); } for(i=0;i<3;i++) { sum=0; for(j=0;j<3;j++) { sum+=a[i][j]; } suma[i]=sum; } for(j=0;j<3;j++) { sum=0; for(i=0;i<3;i++) { sum+=a[i][j]; } sumb[j]=sum; } for(i=0;i<3;i++) { for(j=0;j<3;j++) { if(i==j) { numa+=a[i][j]; } } } num[0]=numa; for(i=0;i<3;i++) { for(j=0;j<3;j++) { if(i+j==2) { numb+=a[i][j]; } } } num[1]=numb; printf("每行的和为:"); for(i=0;i<3;i++) { printf("%d ",suma[i]); } printf(" "); printf("每列的和为:"); for(i=0;i<3;i++) { printf("%d ",sumb[i]); } printf(" "); printf("主次对角线的和:"); for (i=0;i<2;i++) { printf("%d ",num[i]); } return 0; }
实验总结:
1表格的形式输出运用循环输出数组的值与空格的添加来的得到一个类表格的输出。
2二维数组的行列求和就是确定某一行求一行中每一列的和 采用循环套循环的方式求出。
3求矩阵的对角线和为11 22 33的主对角线与13 22 31的次对角线 主对角线等同为i=j时的数组之和,次对角线为i+j=2时的数组和。