用c语言编程实现,运用结构体的知识完成下题,给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。
时间: 2023-12-08 08:09:58 浏览: 84
C语言程序设计-输入2个学生3门课的成绩,计算学生成绩平均分,课程平均分和最高分.
5星 · 资源好评率100%
好的,这是一个非常典型的结构体练习题,下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
#define N 5
struct student {
char id[6];
char name[11];
int score[3];
int total;
};
int main() {
int i, max = 0;
struct student stu[N];
// 输入学生信息
for (i = 0; i < N; i++) {
printf("请输入第%d个学生的学号:", i + 1);
scanf("%s", stu[i].id);
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", stu[i].name);
printf("请输入第%d个学生的三门课成绩:", i + 1);
scanf("%d%d%d", &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
stu[i].total = stu[i].score[0] + stu[i].score[1] + stu[i].score[2];
if (stu[i].total > stu[max].total)
max = i;
}
// 输出总分最高学生的信息
printf("\n总分最高学生的姓名:%s\n", stu[max].name);
printf("总分最高学生的学号:%s\n", stu[max].id);
printf("总分最高学生的总分:%d\n", stu[max].total);
return 0;
}
```
代码实现的思路如下:
1. 定义一个结构体`student`,包含学生的学号`id`、姓名`name`、三门课程的成绩`score`和总分`total`。
2. 定义一个结构体数组`stu`,大小为`N`,用于存储`N`个学生的信息。
3. 使用`for`循环,依次输入每个学生的信息,包括学号、姓名和三门课程的成绩,计算总分,并更新总分最高的学生的下标`max`。
4. 输出总分最高学生的信息,包括姓名、学号和总分。
注意事项:
1. 在输入学号和姓名时,使用`scanf("%s", stu[i].id)`和`scanf("%s", stu[i].name)`即可,因为字符串本身就是数组,不需要使用`&`。
2. 在计算总分时,可以直接使用`stu[i].total = stu[i].score[0] + stu[i].score[1] + stu[i].score[2]`,因为`score`本身就是数组。
3. 在更新总分最高的学生时,使用`if (stu[i].total > stu[max].total)`即可,不需要再定义一个变量来存储最高总分。
阅读全文