使用c语言统计平均分,低于平均分的人数和成绩且条件为:如果输入即为负数那么输出结果为null代表一个学生也没有,如果输入的成绩多于二十个,那么仅计算前二十个学生的成绩输出结果顺序:第一行输出平均分(保留两位小数)第二行输出低于平均分的分数(保留两位小数,域宽7)第三行输出低于平均分的人数(负数也算进低于平均分的人数中)
时间: 2024-03-09 14:51:47 浏览: 52
C语言程序设计-统计出若干个学生的平均成绩,最高分以及得最高分的人数;
5星 · 资源好评率100%
好的,我可以解答这个问题。以下是代码示例:
```c
#include <stdio.h>
#define MAX_NUM 20 // 最大学生数
int main() {
int i, n = 0;
float sum = 0, avg, scores[MAX_NUM];
printf("请输入学生成绩(以负数结束):\n");
for (i = 0; i < MAX_NUM; i++) {
scanf("%f", &scores[i]);
if (scores[i] < 0) break;
sum += scores[i];
n++;
}
if (n == 0) {
printf("null\n");
return 0;
}
avg = sum / n;
printf("平均分:%.2f\n", avg);
printf("低于平均分的分数:");
for (i = 0; i < n; i++) {
if (scores[i] < avg) {
printf("%7.2f", scores[i]);
}
}
printf("\n低于平均分的人数:");
int count = 0;
for (i = 0; i < n; i++) {
if (scores[i] < avg) {
count++;
}
}
printf("%d\n", count);
return 0;
}
```
代码解释如下:
1. 首先定义了一个 `MAX_NUM` 常量表示最大学生数,然后定义了一个 `scores` 数组用于存储学生成绩,一个 `sum` 变量用于记录所有成绩之和,一个 `n` 变量用于记录输入的学生数。
2. 在主函数中,先输出提示信息,然后用循环读入学生成绩,如果输入的成绩为负数,则跳出循环,否则将成绩加入 `sum` 中,并将 `n` 加 1。
3. 如果 `n` 的值为 0,则说明一个学生也没有,直接输出 `null` 并结束程序。
4. 否则,计算平均分 `avg` 并输出。
5. 用循环遍历 `scores` 数组,如果某个成绩低于平均分,则输出该成绩。
6. 再用循环遍历 `scores` 数组,如果某个成绩低于平均分,则将计数器 `count` 加 1。
7. 最后输出 `count`。
注意,这个程序计算平均分时使用的是浮点数类型,因为可能会出现小数。另外,输出低于平均分的分数时使用了域宽为 7,这样可以让输出更加整齐。
阅读全文