C语言表示C语言表示从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,编写函数分别实现下列功能: (1)统计不及格人数并打印不及格学生名单; (2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单; (3)统计各分数段的学生人数及所占的百分比。
时间: 2023-06-14 15:04:41 浏览: 191
以下是C语言代码实现:
```c
#include <stdio.h>
#define MAX_SIZE 30
void fail_list(int scores[], char names[][20], int size) {
int count = 0;
printf("不及格名单:\n");
for (int i = 0; i < size; i++) {
if (scores[i] < 60) {
printf("%s\n", names[i]);
count++;
}
}
printf("不及格人数:%d\n", count);
}
void high_score_list(int scores[], char names[][20], int size) {
int sum = 0, count = 0;
double average;
printf("高于平均分名单:\n");
for (int i = 0; i < size; i++) {
sum += scores[i];
}
average = (double)sum / size;
for (int i = 0; i < size; i++) {
if (scores[i] >= average) {
printf("%s\n", names[i]);
count++;
}
}
printf("高于平均分人数:%d\n", count);
}
void score_distribution(int scores[], int size) {
int count[6] = {0}, total = 0;
double percentage;
printf("分数段统计:\n");
for (int i = 0; i < size; i++) {
if (scores[i] >= 90) {
count[0]++;
}
else if (scores[i] >= 80) {
count[1]++;
}
else if (scores[i] >= 70) {
count[2]++;
}
else if (scores[i] >= 60) {
count[3]++;
}
else if (scores[i] >= 0) {
count[4]++;
}
total++;
}
for (int i = 0; i < 5; i++) {
percentage = (double)count[i] / total * 100;
printf("%d~%d分人数:%d,占比%.2f%%\n", i * 10, i * 10 + 9, count[i], percentage);
}
}
int main() {
int scores[MAX_SIZE], size = 0;
char names[MAX_SIZE][20];
printf("请输入学生姓名和成绩(输入负数结束输入):\n");
while (1) {
char name[20];
int score;
printf("姓名:");
scanf("%s", name);
printf("成绩:");
scanf("%d", &score);
if (score < 0) {
break;
}
strcpy(names[size], name);
scores[size] = score;
size++;
if (size >= MAX_SIZE) {
break;
}
}
fail_list(scores, names, size);
high_score_list(scores, names, size);
score_distribution(scores, size);
return 0;
}
```
该程序中,我们定义了三个函数来实现不及格人数统计、高于平均分学生名单和分数段统计三个功能。在 `main()` 函数中,我们首先从键盘输入学生姓名和成绩,并将其存储在数组 `scores` 和 `names` 中。然后依次调用这三个函数来实现上述功能。
阅读全文