这是《小白C语言编程实战》系列的第16篇。
上一篇:小白C语言编程实战(15):演示插入排序
题目
某班有N人,每人上4门课,输入每门课所有同学的成绩,统计每门课的优秀率和不及格率。程序中假设N为10。
要求
输入输出格式示例:
输入:
92 78 73 59.5 80 91 89 70 65 68<回车>
93 94 90 89 80 85 78 73 66 62<回车>
87 84 86 78 76 73 65 55 45 42<回车>
90 92 78 74 76 73 65 66 50 58<回车>
输出:
1: Excellent=20.00%,Fail=10.00%
2: Excellent=30.00%,Fail=0.00%
3: Excellent=0.00%,Fail=30.00%
4: Excellent=20.00%,Fail=20.00%
提示
定义一个二维数组,用来表示和存放4门课程的所有成绩,程序中假设该班有10个人,可以采用下面方法定义数组:
#define N 10 /* 这里定义一个符号常量N */
float course[4][N+2]={0};
其中,course[k][0] ~ course[k][N-1]
存放某门课程的N个成绩,course[k][N]
存放该课程的优秀率,course[k][N+1]
存放该课程的不及格率,k=0~3
依次对应4门课。
另外,要输出%
,在格式串中用两个%
,即%%
即可。
参考代码
#include <stdio.h>
#include <stdlib.h>
#define N 10
// course[k][0] ~ course[k][N-1]存放某门课程的N个成绩,
// course[k][N]存放该课程的优秀率,
// course[k][N+1]存放该课程的不及格率
int main(int argc, char *argv[]) {
float course[4][N+2]={0};
int i,j;
//依次处理4门课程
for(i=0;i<4;i++) {
// 优秀人数
int excellent = 0;
// 不及格人数
int fail = 0;
for(j=0;j<N;j++) {
scanf("%f", &course[i][j]);
if(course[i][j] >= 90) {
excellent++;
} else if(course[i][j] < 60) {
fail++;
}
course[i][N] = 100*excellent/(float)N;
course[i][N+1] = 100*fail/(float)N;
}
}
for(i=0;i<4;i++) {
printf("%d: Excellent=%.2f%%,Fail=%.2f%%\n", i+1, course[i][N], course[i][N+1]);
}
return 0;
}