从键盘输入若干名学生数据(包括学号 姓名 三门课成绩 ),计算每位学生的总分,输出总分最高的学生的信息.使用定义结构和函数
时间: 2023-12-26 21:18:36 浏览: 107
c代码-从键盘输入一个班(全班人数在15~20之间)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能: (1)录入每个学生的学号(学号:2016001~2016020)和考试成绩; (2)计算课程的总分和平均分;
5星 · 资源好评率100%
好的,我来给您写一个示例代码。
首先,我们需要定义一个结构体来存储学生信息:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 100
struct Student {
char id[10];
char name[20];
int score[3];
int total_score;
};
```
其中,`id` 和 `name` 分别是学号和姓名,`score` 是一个包含三门课成绩的数组,`total_score` 存储总分。
接下来,我们需要定义一个函数来计算每位学生的总分,并找到总分最高的学生:
```c
void find_highest_score(struct Student students[], int n) {
int i, max_index = 0;
for (i = 0; i < n; i++) {
students[i].total_score = students[i].score[0] + students[i].score[1] + students[i].score[2];
if (students[i].total_score > students[max_index].total_score) {
max_index = i;
}
}
printf("Total score highest student:\n");
printf("ID: %s\n", students[max_index].id);
printf("Name: %s\n", students[max_index].name);
printf("Score1: %d\n", students[max_index].score[0]);
printf("Score2: %d\n", students[max_index].score[1]);
printf("Score3: %d\n", students[max_index].score[2]);
printf("Total score: %d\n", students[max_index].total_score);
}
```
这个函数接受一个存储学生信息的结构体数组 `students` 和数组长度 `n`。它会遍历每个学生,计算出他们的总分,并找到总分最高的学生。最后,它会输出该学生的信息。
最后,我们需要在 `main()` 函数中读取输入数据,并调用 `find_highest_score()` 函数:
```c
int main() {
int n, i;
struct Student students[MAX_STUDENTS];
printf("Input number of students: ");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("Input data for student %d:\n", i + 1);
printf("ID: ");
scanf("%s", students[i].id);
printf("Name: ");
scanf("%s", students[i].name);
printf("Score1: ");
scanf("%d", &students[i].score[0]);
printf("Score2: ");
scanf("%d", &students[i].score[1]);
printf("Score3: ");
scanf("%d", &students[i].score[2]);
}
find_highest_score(students, n);
return 0;
}
```
这个 `main()` 函数会提示用户输入学生信息,并将它们存储在结构体数组中。然后,它会调用 `find_highest_score()` 函数来计算总分,并输出总分最高的学生信息。
完整代码如下:
阅读全文