int score; char grade; }; n是数组元素个数。学号num、姓名name和成绩score均是已经存储好的。set_grade函数需要根据学生的成绩score设置其等级grade。等级设置:85-100为A,70-84为B,60-69为C,0-59为D。同时,set_grade还需要返回不及格的人数。
时间: 2024-03-08 13:48:24 浏览: 79
可以使用如下代码实现:
```c
#include <stdio.h>
#include <string.h>
struct student {
int num;
char name[20];
int score;
char grade;
};
int set_grade(struct student *p, int n) {
int fail_num = 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 <= 84) {
p[i].grade = 'B';
} else if (p[i].score >= 60 && p[i].score <= 69) {
p[i].grade = 'C';
} else {
p[i].grade = 'D';
fail_num++; // 不及格人数加1
}
}
return fail_num;
}
int main() {
struct student stu[5] = {
{1, "张三", 78, '\0'},
{2, "李四", 92, '\0'},
{3, "王五", 59, '\0'},
{4, "赵六", 88, '\0'},
{5, "钱七", 45, '\0'}
};
int n = 5; // 数组元素个数
int fail_num = set_grade(stu, n); // 调用set_grade函数
// 输出学生的信息
printf("学号\t姓名\t成绩\t等级\n");
for (int i = 0; i < n; i++) {
printf("%d\t%s\t%d\t%c\n", stu[i].num, stu[i].name, stu[i].score, stu[i].grade);
}
printf("不及格人数:%d\n", fail_num);
return 0;
}
```
在这个例子中,我们定义了一个结构体 `student` 来存储学生的信息,包括学号、姓名、成绩和等级。然后定义了一个函数 `set_grade` 来设置学生的等级,并返回不及格的人数。在 `set_grade` 函数中,我们使用了一个循环来遍历所有的学生,并根据其成绩设置等级。如果成绩不及格,则不及格人数加1。最后,在 `main` 函数中,我们定义了一个包含5个学生信息的数组,调用 `set_grade` 函数来设置学生的等级,并输出每个学生的信息和不及格人数。
阅读全文