c语言编写程序:要求输入三个学生的姓名、平时 、实习、测验和期末成绩,保存到结构体数组中。求每个学生的总评成绩(其中平时、实习、 测验和期末分别占10% 20%. 20%、50%) 输出总评成绩最高的学生的姓名及总评成绩(保留小数点后2位)
时间: 2023-07-10 14:29:03 浏览: 45
好的,这是一个比较典型的使用结构体数组的问题,下面是一份参考代码:
```c
#include <stdio.h>
#include <string.h>
#define NUM_STUDENTS 3
struct student {
char name[20];
float usual_grade;
float internship_grade;
float test_grade;
float final_grade;
float total_grade;
};
int main() {
struct student students[NUM_STUDENTS];
int i;
float max_grade = -1.0;
char max_name[20];
for (i = 0; i < NUM_STUDENTS; i++) {
printf("请输入第%d个学生的姓名:", i+1);
scanf("%s", students[i].name);
printf("请输入第%d个学生的平时成绩:", i+1);
scanf("%f", &students[i].usual_grade);
printf("请输入第%d个学生的实习成绩:", i+1);
scanf("%f", &students[i].internship_grade);
printf("请输入第%d个学生的测验成绩:", i+1);
scanf("%f", &students[i].test_grade);
printf("请输入第%d个学生的期末成绩:", i+1);
scanf("%f", &students[i].final_grade);
students[i].total_grade = students[i].usual_grade * 0.1 + students[i].internship_grade * 0.2 + students[i].test_grade * 0.2 + students[i].final_grade * 0.5;
if (students[i].total_grade > max_grade) {
max_grade = students[i].total_grade;
strcpy(max_name, students[i].name);
}
}
printf("总评成绩最高的学生是%s,总评成绩为%.2f\n", max_name, max_grade);
return 0;
}
```
在这个代码中,我们定义了一个结构体 `student`,包含了学生的姓名和各项成绩。在 `main()` 函数中,我们首先定义了一个结构体数组 `students`,并通过循环遍历每个学生,接收用户输入并计算总评成绩。同时,我们使用一个变量 `max_grade` 记录当前的最高总评成绩,并在每个学生输入完毕后判断是否更新最高总评成绩,如果是则更新并记录下该学生的姓名。
最后,我们输出最高总评成绩对应的学生姓名和总评成绩。