第十次实验
1.有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。
#include <stdio.h> int main() { int sum,grade[3][5]={78,89,45,65,68,69,67,71,73,75,78,65,82,85,86},i,j,sum1=0; double average,ave; printf("\t语文\t数学\t英语\n"); for(j=0;j<5;j++) { printf("学生%d\t",j+1); for(i=0;i<3;i++) { printf("%d\t",grade[i][j]); } printf("\t\n"); } for(i=0;i<5;i++) { sum=0; for(j=0;j<3;j++) { sum=sum+grade[j][i]; } printf("总分%d\n",sum); average=(double)sum/3; printf("平均%.3f\n",average); } //各科平均分 printf("平均分"); for(i=0;i<3;i++) { sum1=0; for(j=0;j<5;j++) { sum1=sum1+grade[i][j]; } ave=(double)sum1/5; printf("%.2f\t",ave); } return 0; }
2.求任意方阵每行、每列、两对角线上元素之和。
#include <stdio.h> #define N 100 int main() { int i,j,sum,a,b=0,d; //i代表行,j代表列 int group[N][N]; printf("请输入行数"); scanf("%d",&a); for(i=0;i<a;i++) { for(j=0;j<a;j++) { b++; group[i][j]=b; printf("%3d",b); } printf("\n"); } //各行之和 for(i=0;i<a;i++) { sum=0; for(j=0;j<a;j++) { sum=sum+group[i][j]; } printf("第%d行的和为%d\n",i+1,sum); } //各列之和 for(j=0;j<a;j++) { sum=0; for(i=0;i<a;i++) { sum=sum+group[i][j]; } printf("第%d列的和是%d\n",j+1,sum); } //对角线之和 sum=0; for(i=0;i<a;i++) { for(j=0;j<a;j++) { if(i==j) { sum=sum+group[i][j]; } } } printf("对角线之和为%d\n",sum); sum=0; for(i=0;i<a;i++) { for(j=4;j>=0;j--) { if(i+j==4) { sum=sum+group[i][j]; } } } printf("对角线2之和为%d",sum); return 0; }
知识点
1、group[a][b]代表坐标(a,b)点处的值
2、注意输出语句和赋值语句摆放位置,错误可能会影响程序数值错误
3、适当使用if语句可以减少for循环量