作业(十)
1.
实验要求:
有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。
实验代码:
#include<stdio.h> #define m 5 #define n 6 int main() { int i=0,j=0; float sum=0,ave=0; float score[m][n]={{1,65,78,84},{2,68,78,89},{3,81,48,84},{4,85,67,69},{5,90,80,50}}; for(i=0;i<m;i++) { for(j=1;j<=n-3;j++) { score[i][n-2]=score[i][n-2]+score[i][j]; } score[i][n-1]=(score[i][n-2])/3; } printf("\t同学\t语文\t数学\t英语\t总分\t平均分\t\n"); for(i=0;i<m;i++) { for(j=0;j<n;j++) { if(score[i][j]==0) { break; } printf("\t%.2lf",score[i][j]); } printf("\n"); } printf("平均值:"); for(j=1;j<=n-3;j++) { sum=0; for(i=0;i<m;i++) { sum+=score[i][j]; } ave=sum/5; printf("\t%.2lf",ave); } return 0; }
实验截图:
2.
实验要求:
求任意方阵每行、每列、两对角线上元素之和。
实验代码:
#include<stdio.h> #define N 100 int main() { int n,sum[N][N]={0},i=0,j=0,m=1,sum1=0,sum2=0,I,J; printf("请输入方阵的长度\n"); scanf("%d",&n); for(i=0;i<n;i++) { for(j=0;j<n;j++) { sum[i][j]=m++; } } printf("原方阵:\n"); for(i=0;i<=n;i++) { for(j=0;j<=n;j++) { if(sum[i][j]==0) { break; } printf("%4d",sum[i][j]); } printf("\n"); }//对角线 for(i=n-1;i>=0;i--) { j=n-i-1; sum1=sum1+sum[i][j]; } for(i=0;i<=n-1;i++) { j=i; sum2=sum2+sum[i][j]; }//每行每列 for(i=0;i<n;i++) { for(j=0;j<n;j++) { sum[i][n]=sum[i][n]+sum[i][j]; } } for(i=0;i<n;i++) { for(j=0;j<n;j++) { sum[n][j]=sum[n][j]+sum[i][j]; } }//输出 for(i=0;i<=n;i++) { for(j=0;j<=n;j++) { if(sum[i][j]==0) { break; } printf("%4d",sum[i][j]); } printf("\n"); } for(i=0;i<n;i++) { I=i+1; printf("第%d行的合是%4d\n",I,sum[i][n]); } for(j=0;j<n;j++) { J=j+1; printf("第%d列的合是%4d\n",J,sum[n][j]); } printf("从右上到左下的对角线合为%d\n",sum1); printf("从左上到右下的对角线合为%d\n",sum2); return 0; }
实验截图:
实验结论:
1.二维数组[][]第一个可以为空白,第二个不能为空白。
2.数组的越界问题还是要考虑。
3.注意循环之前要先对其赋值。
4.要注意计算平均值时的小数点。