从键盘输入若干个学生的信息每个学生信息包括学号姓名成绩,输出学生的成绩等级和不及格的人数(等级设置为:0-59为E,60-69为D,70-79为C)用C语言写出来
时间: 2025-01-05 22:47:26 浏览: 71
在C语言中,你可以通过循环结构和条件判断来实现这个功能。以下是一个简单的示例程序,它会提示用户输入学生信息,并计算并输出成绩等级以及不及格人数:
```c
#include <stdio.h>
#include <string.h>
#define GRADE_BOUNDARY(e) (0, 59)
#define GRADE_BOUNDARY(d) (60, 69)
#define GRADE_BOUNDARY(c) (70, 79)
void input_student_info(int *score) {
char name[50];
printf("请输入学号(例如1001): ");
scanf("%d", &(*score));
printf("请输入姓名: ");
fgets(name, sizeof(name), stdin);
// 移除fgets最后的换行符
name[strcspn(name, "\n")] = '\0';
printf("请输入成绩: ");
scanf("%d", score);
}
int main() {
int num_students = 0;
int total_fails = 0;
while (1) {
int score;
input_student_info(&score);
if (score == -1) { // 用户输入负数表示结束输入
break;
}
num_students++;
if (score >= GRADE_BOUNDARY(e)[0] && score <= GRADE_BOUNDARY(e)[1]) {
printf("学号 %d 的成绩是 E 级\n", score);
} else if (score >= GRADE_BOUNDARY(d)[0] && score <= GRADE_BOUNDARY(d)[1]) {
printf("学号 %d 的成绩是 D 级\n", score);
} else if (score >= GRADE_BOUNDARY(c)[0] && score <= GRADE_BOUNDARY(c)[1]) {
printf("学号 %d 的成绩是 C 级\n", score);
} else {
printf("学号 %d 的成绩是 F 级\n", score);
total_fails++;
}
}
printf("\n不及格的学生人数: %d\n", total_fails);
return 0;
}
```
在这个程序中,我们定义了三个grade_boundary宏来方便地检查分数范围。当用户输入负数时,程序会停止接收输入并结束。
运行此程序时,你需要手动输入学生的学号、姓名和成绩。注意,在实际应用中,可能需要处理更复杂的输入情况,如错误校验等。
阅读全文