编写函数fun(),其功能是计算学生的总得分,并将客观题和操作题都同时及格的学生等级设定为"合格", 有一项不及格或两项都不及格学生等级确定为"不合格"。 同时将"合格"学生的信息保存在结构体数组h中,合格学生的人数由fun函数的返回值获得。
时间: 2024-03-01 19:49:42 浏览: 33
好的,这是一个比较具体的问题,我可以为您提供一个C语言的实现代码,如下所示:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_STUDENT_NUM 100
struct student {
char name[20];
int objectiveScore;
int operationScore;
int totalScore;
char level[3];
};
int fun(struct student s[], int n) {
int i, count = 0;
for (i = 0; i < n; i++) {
s[i].totalScore = s[i].objectiveScore + s[i].operationScore;
if (s[i].objectiveScore >= 60 && s[i].operationScore >= 60) {
sprintf(s[i].level, "合格");
count++;
} else {
sprintf(s[i].level, "不合格");
}
}
return count;
}
int main() {
struct student h[MAX_STUDENT_NUM];
int i, n, count;
printf("请输入学生人数:");
scanf("%d", &n);
printf("请分别输入每个学生的姓名、客观题得分、操作题得分(空格隔开):\n");
for (i = 0; i < n; i++) {
scanf("%s%d%d", h[i].name, &h[i].objectiveScore, &h[i].operationScore);
}
count = fun(h, n);
printf("合格学生的信息如下:\n");
printf("%-8s%-8s%-8s%-8s\n", "姓名", "客观题", "操作题", "总分");
for (i = 0; i < n; i++) {
if (strcmp(h[i].level, "合格") == 0) {
printf("%-8s%-8d%-8d%-8d\n", h[i].name, h[i].objectiveScore, h[i].operationScore, h[i].totalScore);
}
}
printf("总共有%d个学生合格\n", count);
return 0;
}
```
在这个代码中,我们定义了一个结构体`student`,包含了学生的姓名、客观题得分、操作题得分、总分以及等级。其中,函数`fun`就是实现了题目要求的功能,通过传入一个学生数组和学生人数,计算每个学生的总分,并且根据题目要求判断学生的等级。最后,函数返回合格学生的人数。
在主函数中,我们通过`scanf`函数读入每个学生的姓名、客观题得分和操作题得分,并且调用`fun`函数计算学生的等级和合格人数。最后,我们输出了合格学生的信息和合格人数。
希望这个代码对您有所帮助!