题目:某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过40人参加考试,请编程计算:(1).每个学生的平均分(2).每门课程的总分和平均分
代码如下:
#include#define STUD_N 40 #define COURSE_N 3 void ReadScore(int score[][COURSE_N], long nume[], int n); void AverforStud(int score[][COURSE_N], int sum[], float aver[], int n); void AverforCourse(int score[][COURSE_N], int sum[], float aver[], int n); void print(int score[][COURSE_N], int sum[], int sumS[], float avers[], int sumC[], float averC[], int n); int main(void) { int score[STUD_N][COURSE_N], sumS[STUD_N], sumC[COURSE_N], n; long num[STUD_N]; float averS[STUD_N], averC[COURSE_N]; printf("input the total number of the students(n<=40):"); scanf("%d", &n); ReadScore(score, num, n); AverforStud(score, sumS, averS, n); AverforCourse(score, sumC, averC, n); print(score, num, sumS, averS, sumC, averC, n); return 0; } //函数功能:输入n个学生的学号以及其三门课成绩 void ReadScore(int score[][COURSE_N], long num[], int n) { int i, j; printf("Input student's ID and score as :MT EN PH:n"); for (i = 0; i < n; i++) { scanf("%d", &num[i]); for (j = 0; j < COURSE_N; j++) { scanf("%d", &score[i][j]); } } } //函数功能:计算每个学生的总分和平均分 void AverforStud(int score[][COURSE_N], int sum[], float aver[], int n) { int i, j; for (i = 0; i < n; i++) { sum[i] = 0; for (j = 0; j < COURSE_N; j++) { sum[i] = sum[i] + score[i][j]; } aver[i] = (float)sum[i] / COURSE_N; } } //函数功能:计算每门课程的总分和平均分 void AverforCourse(int score[][COURSE_N], int sum[], float aver[], int n) { int i, j; for (j = 0; j < COURSE_N; j++) { sum[j] = 0; for (i = 0; i < n; i++) { sum[j] = sum[j] + score[i][j]; } aver[j] = (float)sum[j] / n; } } //函数功能:打印每个学生的学号,各门课成绩,总分和平均分,以及每门课的总分和平均分 void print(int score[][COURSE_N], long num[], int sumS[], float averS[], int sumC[], float averC[], int n) { int i, j; for (i = 0; i < n; i++) { printf("%12ldt", num[i]); for (j = 0; j < COURSE_N; j++) { printf("%4dt", score[i][j]); } printf("%4dt%5.1fn", sumS[i],averS[i]); } printf("SumofCourset"); for (j = 0; j < COURSE_N; j++) { printf("%4dt", sumC[j]); } printf("nAverofCourset"); for (j = 0; j < COURSE_N; j++) { printf("%4.lft", averC[j]); } printf("n"); }
运行结果如下:
其实有个小问题:
最后一行结果应该带小数点,但是不知道为啥,不带。。
懂的帮忙看看。最后代码%4.1f 应该没问题。



