C语言编写程序,输入某班10个同学的学号、姓名和成绩,输出成绩最高和成绩最低同学的学号、姓名和成绩。要求:将某一同学的信息(学号、姓名和成绩)定义为自定义数据类型
时间: 2023-12-16 11:04:22 浏览: 110
好的,这是一个比较基础的 C 语言编程问题,下面是我为你编写的代码:
```c
#include <stdio.h>
#include <string.h>
// 定义学生信息的结构体
typedef struct {
char id[20];
char name[20];
float score;
} Student;
int main() {
int i;
Student stu[10];
Student max_stu, min_stu; // 分别记录最高分和最低分的学生信息
// 输入学生信息
for (i = 0; i < 10; i++) {
printf("请输入第%d个学生的学号、姓名和成绩:", i + 1);
scanf("%s%s%f", stu[i].id, stu[i].name, &stu[i].score);
}
// 找到最高分和最低分的学生
max_stu = min_stu = stu[0];
for (i = 1; i < 10; i++) {
if (stu[i].score > max_stu.score) {
max_stu = stu[i];
}
if (stu[i].score < min_stu.score) {
min_stu = stu[i];
}
}
// 输出最高分和最低分的学生信息
printf("成绩最高的学生是:%s %s %.2f\n", max_stu.id, max_stu.name, max_stu.score);
printf("成绩最低的学生是:%s %s %.2f\n", min_stu.id, min_stu.name, min_stu.score);
return 0;
}
```
这个程序中,我们首先定义了一个 `Student` 结构体,它包含了学号、姓名和成绩三个字段。然后在 `main` 函数中,我们定义了一个长度为 10 的 `Student` 数组 `stu`,用来存储输入的 10 个学生信息。
在输入完学生信息后,我们遍历整个数组,找到其中成绩最高和成绩最低的两个学生,分别记录在 `max_stu` 和 `min_stu` 变量中。
最后我们输出 `max_stu` 和 `min_stu` 的信息即可。需要注意的是,我们使用了 `%.2f` 格式化字符串来保留成绩的小数点后两位。
阅读全文