作业 十
Posted …
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了作业 十相关的知识,希望对你有一定的参考价值。
1.有5名学生,每名学生有语文、数学和外语3门课的考试成绩。编程统计各学生的总分和平均分以及所有学生各科的平均分。要求成绩在程序中初始化,结果以表格的形式输出。
#include<stdio.h> #define N 5 #define M 5 void readScore(int score[N][M]); void printScore(int score[N][M]); void sumScore(int score[N][M],int sum[M]); void aveScore1(int score[N][M],double ave[N]); void aveScore2(int score[N][M],double ave[M]); int main() { int score[N][M]={0},j; double ave[M]; readScore(score); printf(" 语文\\t数学\\t英语\\t总分\\t平均分\\n"); printScore(score); printf("平均分 "); aveScore2(score,ave); for(j=0;j<3;j++) { printf("%.2f\\t",ave[j]); } return 0; } void readScore(int score[N][M]) { int i,j; for(i=0;i<N;i++) { printf("请输入第%d个人成绩\\n",i+1); for(j=0;j<3;j++) { scanf("%d",&score[i][j]); } } } void printScore(int score[N][M]) { int i,j,sum[N]={0}; double ave[N]={0}; sumScore(score,sum); aveScore1(score,ave); for(i=0;i<N;i++) { for(j=0;j<3;j++) { printf("\\t%d",score[i][j]); } printf("\\t%d",sum[i]); printf("\\t%.2f",ave[i]); printf("\\n"); } } void sumScore(int score[N][M], int sum[M]) { int i,j,he; for(i=0;i<N;i++) { he=0; for(j=0;j<3;j++) { he+=score[i][j]; } sum[i]=he; } } void aveScore1(int score[N][M],double ave[N]) { int i,j,he; for(i=0;i<N;i++) { he=0; for(j=0;j<3;j++) { he+=score[i][j]; } ave[i]=(double)he/3; } } void aveScore2(int score[N][M],double ave[M]) { int i,j,he; for(j=0;j<3;j++) { he=0; for(i=0;i<N;i++) { he+=score[i][j]; } ave[j]=(double)he/N; } }
2.求任意方阵每行、每列、两对角线上元素之和。
#include<stdio.h> #define N 4 #define M 4 void readNum(int num[N][M]); void sumHeng(int num[N][M]); void sumShu(int num[N][M]); void sumXie1(int num[N][M]); void sumXie2(int num[N][M]); int main() { int num[N][M]={{1,2,3,4},{5,6,7,8},{9,0,2,1},{4,3,6,2}}; int a,b; readNum(num); sumHeng(num); printf("\\n"); sumShu(num); printf("\\n"); sumXie1(num); printf("\\n"); sumXie2(num); printf("\\n"); return 0; } void readNum(int num[N][M]) { int i,j; for(i=0;i<N;i++) { for(j=0;j<M;j++) { printf("%2d",num[i][j]); } printf("\\n"); } } void sumHeng(int num[N][M]) { int i,j,sum; for(i=0;i<N;i++) { sum=0; for(j=0;j<M;j++) { sum+=num[i][j]; } printf("第%d行元素之和为%d\\n",i+1,sum); } } void sumShu(int num[N][M]) { int i,j,sum; for(j=0;j<M;j++) { sum=0; for(i=0;i<N;i++) { sum+=num[i][j]; } printf("第%d列元素之和为%d\\n",j+1,sum); } } void sumXie1(int num[N][M]) { int i,j,sum; sum=0; for(i=0;i<N;i++) { for(j=0;j<M;j++) { if(i==j) { sum+=num[i][j]; } } } printf("左上到右下的对角线的和为%d",sum); } void sumXie2(int num[N][M]) { int i,j,sum; sum=0; for(i=0;i<N;i++) { for(j=0;j<M;j++) { if(i==M-1) { sum+=num[i][j]; } } } printf("右上到左下的对角线的和为%d",sum); }
二、实验总结
1、写程序要一个一个的写,别一下子都写完,到时候不好检查。
2、for语句中的表达式要用;分开‘
3、二维数组要用两个[][]分别代表行和列。
4二维数组用到了两层循环,内外层循环的循环变量由题决定,根据题决定先循环行还是先循环列。
以上是关于作业 十的主要内容,如果未能解决你的问题,请参考以下文章