如果输入的成绩多于二十个,那么仅计算前20个学生的成绩
时间: 2023-12-15 11:04:14 浏览: 30
好的,可以根据您的需求修改代码,实现当输入的成绩多于20个时,仅计算前20个学生的成绩。以下是修改后的代码:
```c
#include <stdio.h>
#define MAX_NUM 20 // 最大学生数量
int main() {
int n = 0; // 学生数量,初始化为0
int sum = 0, num_below_average = 0; // 总分数,低于平均分的人数
int scores[MAX_NUM]; // 学生成绩数组
while (1) {
int temp_score;
printf("请输入第%d个学生的成绩(输入负数结束输入):", n+1);
scanf("%d", &temp_score);
if (temp_score < 0) {
break;
}
if (n >= MAX_NUM) { // 如果输入的成绩多于20个,仅计算前20个学生的成绩
printf("超过最大学生数量,已自动忽略该成绩。\n");
continue;
}
scores[n] = temp_score;
sum += scores[n];
n++;
}
if (n == 0) { // 如果一个学生也没有
printf("null\n");
return 0;
}
// 计算平均分
float average;
if (n > MAX_NUM) { // 如果输入的成绩多于20个,仅计算前20个学生的成绩的平均分
printf("输入的成绩多于20个,仅计算前20个学生的成绩。\n");
average = (float)sum / MAX_NUM;
} else {
average = (float)sum / n;
}
// 计算低于平均分的人数和成绩
for (int i = 0; i < n && i < MAX_NUM; i++) { // 如果输入的成绩多于20个,仅计算前20个学生的成绩
if (scores[i] < average) {
num_below_average++;
printf("第%d个学生的成绩为%d,低于平均分。\n", i+1, scores[i]);
}
}
printf("平均分为%.2f,低于平均分的人数为%d。\n", average, num_below_average);
return 0;
}
```
使用方法:运行程序后,输入每个学生的成绩,当输入的成绩多于20个时,程序会仅计算前20个学生的成绩,并输出提示信息。否则,程序会自动计算平均分、低于平均分的人数和成绩,并输出结果。