一、实验内容
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,x=0; double ave1,ave2,a=0,b=0,c=0; printf(" 语文 数学 英语 总分 平均分 "); sum1=0; sum2=0; ave1=0; ave2=0; for(i=0;i<N;i++) { for(j=0;j<M;j++) { printf("%d ",fen[i][j]); x++; sum1=sum1+fen[i][j]; ave1=sum1/3; if(x%3==0) { printf("%d %.2lf ",sum1,ave1); sum1=0; } if(j==0) { a=a+fen[i][j]; } if(j==1) { b=b+fen[i][j]; } if(j==2) { c=c+fen[i][j]; } } } printf("%.2f %.2f %.2f",a/5,b/5,c/5); return 0; }
2.求任意方阵每行、每列、两对角线上元素之和。
#include <stdio.h> #define N 100 int main() { int a[N][N],i,k,x,n=0,sum=0; printf("请输入方阵的行数 "); scanf("%d",&x); for(i=0;i<x;i++) { printf(" "); for(k=0;k<x;k++) { n++; a[i][k]=n; printf("%4d",n); } } printf(" "); for(i=0;i<x;i++) { sum=0; for(k=0;k<x;k++) { sum+=a[i][k]; } printf(" 第%d行的数的和为%d。 ",i+1,sum); } for(k=0;k<x;k++) { sum=0; for(i=0;i<x;i++) { sum+=a[i][k]; } printf(" 第%d列的数的和为%d。 ",k+1,sum); } sum=0; for(i=0;i<x;i++) { for(k=0;k<x;k++) { if(i==k) { sum+=a[i][k]; } } } printf(" 左上至右下的对角线上的数的和为%d ",sum); sum=0; for(i=0;i<x;i++) { for(k=x;k>=0;k--) { if(i==k) { sum+=a[i][k]; } } } printf(" 右上至左下的对角线上的数的和为%d ",sum); return 0; }
二、知识点总结
1.数字的初始值一定要定义。
2.二维数组的行和列要分清。
三、实验总结
1.使用变量要赋初始值。
2.数组要注意越界的问题。