C语言运用函数和数组学生成绩统计 从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能: (1)统计不及格人数并打印不及格学生名单; (2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单; (3)统计各分数段的学生人数及所占的百分比。 (4)用一维数组和指针变量作为函数参数,编程打印某班一门课成绩的最高分及其学号。
时间: 2024-01-02 20:02:32 浏览: 74
好的,这是一个关于 C 语言的问题。我来一步步回答你。
首先,我们需要定义一个数组来存储学生成绩,最多不超过 30 人,所以数组大小为 30。代码如下:
```c
int scores[30];
```
然后,我们需要从键盘输入学生成绩,当输入成绩为负值时,输入结束。在输入的同时,我们可以统计不及格人数,并打印不及格学生名单,代码如下:
```c
int i = 0, fail = 0;
while (1) {
printf("请输入学生成绩:");
scanf("%d", &scores[i]);
if (scores[i] < 0) {
break;
}
if (scores[i] < 60) {
fail++;
printf("不及格学生:%d\n", i + 1);
}
i++;
}
```
接着,我们需要计算全班平均分,并统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单。代码如下:
```c
int sum = 0, avg, above_avg = 0;
for (int j = 0; j < i; j++) {
sum += scores[j];
}
avg = sum / i;
for (int j = 0; j < i; j++) {
if (scores[j] >= avg) {
above_avg++;
printf("成绩高于或等于平均分的学生:%d\n", j + 1);
}
}
printf("全班平均分为:%d\n", avg);
```
最后,我们需要统计各分数段的学生人数及所占的百分比,并打印某班一门课成绩的最高分及其学号。代码如下:
```c
int count[6] = {0};
for (int j = 0; j < i; j++) {
if (scores[j] < 60) {
count[0]++;
} else if (scores[j] < 70) {
count[1]++;
} else if (scores[j] < 80) {
count[2]++;
} else if (scores[j] < 90) {
count[3]++;
} else if (scores[j] < 100) {
count[4]++;
} else {
count[5]++;
}
}
for (int j = 0; j < 6; j++) {
printf("%d~%d 分的学生人数为:%d,所占百分比为:%f\n", j * 10, j * 10 + 9, count[j], count[j] * 100.0 / i);
}
int max_score = scores[0], max_index = 0;
for (int j = 1; j < i; j++) {
if (scores[j] > max_score) {
max_score = scores[j];
max_index = j;
}
}
printf("最高分为:%d,学号为:%d\n", max_score, max_index + 1);
```
最后,以上的代码可以放在一个函数中,然后你可以调用这个函数来实现你的需求。
阅读全文