时间:2024.12.17
6-1 按等级统计学生成绩
代码
// 根据成绩设置等级,并返回不及格人数
int set_grade(struct student *p, int n) {int count = 0;for (int i = 0; i < n; i++) {if (p[i].score >= 85 && p[i].score <= 100) {p[i].grade = 'A';} else if (p[i].score >= 70 && p[i].score < 85) {p[i].grade = 'B';} else if (p[i].score >= 60 && p[i].score < 70) {p[i].grade = 'C';} else {p[i].grade = 'D';count++;}}return count;
}
代码思路
-
结构体定义
- 首先定义了一个
student
结构体,其中包含学生的学号num
、姓名name
、成绩score
和等级grade
。
- 首先定义了一个
-
函数
set_grade
- 这个函数接受一个
student
结构体指针p
和一个整数n
(表示学生数量)。 - 函数内部通过循环遍历每个学生的成绩,根据成绩范围设置等级:
- 如果成绩在 85 到 100 之间,等级设为
'A'
。 - 如果成绩在 70 到 84 之间,等级设为
'B'
。 - 如果成绩在 60 到 69 之间,等级设为
'C'
。 - 如果成绩低于 60,等级设为
'D'
,并且将不及格人数count
加 1。
- 如果成绩在 85 到 100 之间,等级设为
- 最后返回不及格人数
count
。
- 这个函数接受一个
-
主函数
main
- 定义了一个
student
结构体数组stu
,用于存储学生信息。 - 首先读取学生数量
n
。 - 然后通过循环读取每个学生的学号、姓名和成绩,存储到
stu
数组中。 - 调用
set_grade
函数,传入stu
数组和学生数量n
,获取不及格人数count
。 - 输出不及格人数。
- 再次循环遍历
stu
数组,输出每个学生的学号、姓名和等级。
- 定义了一个
完整程序代码
#include <stdio.h>
#define MAXN 10// 学生结构体
struct student {int num;char name[20];int score;char grade;
};// 根据成绩设置等级,并返回不及格人数
int set_grade(struct student *p, int n) {int count = 0;for (int i = 0; i < n; i++) {if (p[i].score >= 85 && p[i].score <= 100) {p[i].grade = 'A';} else if (p[i].score >= 70 && p[i].score < 85) {p[i].grade = 'B';} else if (p[i].score >= 60 && p[i].score < 70) {p[i].grade = 'C';} else {p[i].grade = 'D';count++;}}return count;
}int main() {struct student stu[MAXN];int n, i;int count;scanf("%d", &n);for (i = 0; i < n; i++) {scanf("%d %s %d", &stu[i].num, stu[i].name, &stu[i].score);}count = set_grade(stu, n);printf("The count for failed (<60): %d\n", count);printf("The grades:\n");for (i = 0; i < n; i++) {printf("%d %s %c\n", stu[i].num, stu[i].name, stu[i].grade);}return 0;
}