定义班级人数N,输入N个学生成绩,输出成绩分析表(包括各分数的人数、平均分、优秀率和及格率)提示:如统计得分100分的人数,可定义变量fullcount,,初始值为0,每循环一次,判断得分是否等于100 用C语言
时间: 2024-11-22 18:40:32 浏览: 43
在C语言中,你可以通过以下步骤来完成这个任务:
```c
#include <stdio.h>
#define MAX_STUDENTS 100 // 定义最大学生数
#define PASSING_MARK 60 // 及格线
#define EXCELLENT_RATE 90 // 优秀分数线
// 结构体表示学生信息
typedef struct {
int score;
} Student;
int main() {
int N, i, fullcount = 0; // 学生人数、计数器
float total_score = 0, average; // 总分和平均分
scanf("%d", &N); // 输入学生人数
Student students[MAX_STUDENTS]; // 存储学生分数数组
for (i = 0; i < N; i++) {
scanf("%d", &students[i].score);
total_score += students[i].score; // 累加总分
if (students[i].score == 100) {
fullcount++;
}
}
if (N > 0) { // 防止除以零错误
average = (float)total_score / N; // 计算平均分
float excellent_rate = (float)fullcount / N * 100; // 优秀率计算
float passing_rate = (float)(N - count_below_passing(students, PASSING_MARK)) / N * 100; // 及格率计算,函数count_below_passing用于计算低于及格线的学生数
printf("成绩分析表:\n");
printf("得分为100分的人数: %d\n", fullcount);
printf("平均分: %.2f\n", average);
printf("优秀率(90及以上): %.2f%%\n", excellent_rate);
printf("及格率(60及以上): %.2f%%\n", passing_rate);
} else {
printf("没有输入任何数据。\n");
}
return 0;
}
// 辅助函数,统计低于指定分数的学生数量
int count_below_passing(Student scores[], int mark, int size) {
int below_mark = 0;
for (int i = 0; i < size; i++) {
if (scores[i].score < mark) {
below_mark++;
}
}
return below_mark;
}
```
这个程序首先读取学生的数量和他们的分数,然后计算总分、平均分、优秀率和及格率,并打印出结果。注意这里假设了所有输入都是有效的整数。
阅读全文