python作业 求助,急! 30

能附代码图最好,谢谢!... 能附代码图最好,谢谢! 展开
 我来答
程序员中的理科生
2022-12-18 · 略通一些编程知识,数理化课代表有问必答。
程序员中的理科生
采纳数:22 获赞数:93

向TA提问 私信TA
展开全部

那我们首先定义学生结构体类型,然后创建一个大小为5的该结构体数组:

然后我们可以定义三个函数:

  • 一个函数用于输入5个学生的数据,这个函数的参数应该是学生结构体数组的指针,因为我们要在函数内部更新学生数据,而不是返回新的数据:

一个函数用于求出每个学生的平均分,这个函数的参数应该是学生结构体的指针,因为我们要在函数内部更新学生的平均分,而不是返回新的平均分:

这是求出平均分最高的学生的函数:

这个函数的参数是学生结构体数组的指针和指向学生结构体的指针的指针,因为我们要在函数内部更新最高平均分的学生的指针。

最后,我们可以在主函数中调用这些函数来完成题目要求的功能:

完整的代码如下:

struct Student {

int student_id;

int class_id;

char name[100];

int course1;

int course2;

int course3;

float average_score;

};

void input_student_data(struct Student* students) {

for (int i = 0; i < 5; i++) {

printf("输入第%d个学生的数据:\n", i + 1);

printf("学号: ");

scanf("%d", &students[i].student_id);

printf("班级: ");

scanf("%d", &students[i].class_id);

printf("姓名: ");

scanf("%s", students[i].name);

printf("课程1: ");

scanf("%d", &students[i].course1);

printf("课程2: ");

scanf("%d", &students[i].course2);

printf("课程3: ");

scanf("%d", &students[i].course3);

}

}

void compute_average_score(struct Student* student) {

student->average_score = (student->course1 + student->course2 + student->course3) / 3.0;

}

void find_highest_average_score(struct Student* students, struct Student** highest_average_score_student) {

*highest_average_score_student = &students[0];

for (int i = 1; i < 5; i++) {

if (students[i].average_score > (*highest_average_score_student)->average_score) {

*highest_average_score_student = &students[i];

}

}

}

int main() {

struct Student students[5];

input_student_data(students);

for (int i = 0; i < 5; i++) {

compute_average_score(&students[i]);

printf("学生%d的平均分为: %.2f\n", i + 1, students[i].average_score);

}

struct Student* highest_average_score_student;

find_highest_average_score(students, &highest_average_score_student);

printf("平均分最高的学生是: \n");

printf("学号: %d\n", highest_average_score_student->student_id);

printf("班级: %d\n", highest_average_score_student->class_id);

printf("姓名: %s\n", highest_average_score_student->name);

printf("课程1: %d\n", highest_average_score_student->course1);

printf("课程2: %d\n", highest_average_score_student->course2);    

printf("课程3: %d\n", highest_average_score_student->course3);    

printf("平均分: %.2f\n", highest_average_score_student->average_score);    

return 0;

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式