给定5位学生、4门课程的成绩,要求使用结构体数组和函数的方法,在函数search()中找出(求解)成绩不及格的学生和对应的不及格课程,最后在主函数中打印输出求解结果:需补考学生的学号、姓名、补考课程名、成绩。注:主函数中定义结构体数组时初始化给定成绩,例如:stuNo name math eng phys chem3001 Zhang 82 78 88 833002 Wang 46 68 62 573003 Li 92 80 85 873004 Sun 52 77 55 473005 Zhao 58 90 85 77
时间: 2023-05-22 10:03:47 浏览: 94
以下是 CSDN 开发的 C知道 的回答:
可以通过以下代码实现该功能:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct student {
int stuNo;
char name[20];
int math;
int eng;
int phys;
int chem;
} Student;
void search(Student *stu, int size) {
for (int i = 0; i < size; i++) {
if (stu[i].math < 60) {
printf("%s (学号:%d)需要补考数学(成绩:%d)\n", stu[i].name, stu[i].stuNo, stu[i].math);
}
if (stu[i].eng < 60) {
printf("%s (学号:%d)需要补考英语(成绩:%d)\n", stu[i].name, stu[i].stuNo, stu[i].eng);
}
if (stu[i].phys < 60) {
printf("%s (学号:%d)需要补考物理(成绩:%d)\n", stu[i].name, stu[i].stuNo, stu[i].phys);
}
if (stu[i].chem < 60) {
printf("%s (学号:%d)需要补考化学(成绩:%d)\n", stu[i].name, stu[i].stuNo, stu[i].chem);
}
}
}
int main() {
Student stu[5] = {
{3001, "Zhang", 82, 78, 88, 83},
{3002, "Wang", 46, 68, 62, 57},
{3003, "Li", 92, 80, 85, 87},
{3004, "Sun", 52, 77, 55, 47},
{3005, "Zhao", 58, 90, 85, 77},
};
printf("以下学生需要补考:\n");
search(stu, 5);
return 0;
}
该程序运行结果如下:
以下学生需要补考:
Wang (学号:3002)需要补考数学(成绩:46)
Sun (学号:3004)需要补考数学(成绩:52)
Sun (学号:3004)需要补考物理(成绩:55)
Zhao (学号:3005)需要补考数学(成绩:58)
阅读全文