有5个学生,每个学生的数据包括:学号(int型)、姓名(字符数组,长度不超过20个字符)、高数成绩 (float型)。编写程序要求从键盘输入每个学生的数据,并输出高数成绩最低的学生的学号、姓名和高数成绩。(要 求:采用结构体类型,c语言) 2)输入提示: 输入5行,输入5个学生的学号、姓名、高数成绩,要求数据之间用空格分开 3)输出提示: 输出1行,输出成绩最低的学生信息,包括:学号姓名 高数成绩(小数点后保留1位),数据间隔为一个空格。 4)输入样本: 11 Li 56.5 12 Wang 98.5 13 Cheng 60 14 Jiang 77 15 Zhao 65.5 5)输出样本: 11 Li 56.5
时间: 2024-02-26 13:51:43 浏览: 83
好的,根据您的要求,我已经设计好了如下的 C 语言程序来实现此功能:
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
struct Student {
int id;
char name[20];
float score;
};
int main()
{
struct Student stu[5];
int i, min_index;
float min_score;
// 从键盘输入学生数据
for (i = 0; i < 5; i++) {
scanf("%d %s %f", &stu[i].id, stu[i].name, &stu[i].score);
}
// 查找高数成绩最低的学生
min_index = 0;
min_score = stu[0].score;
for (i = 1; i < 5; i++) {
if (stu[i].score < min_score) {
min_index = i;
min_score = stu[i].score;
}
}
// 输出高数成绩最低的学生信息
printf("%d %s %.1f\n", stu[min_index].id, stu[min_index].name, stu[min_index].score);
return 0;
}
```
其中,我们定义了一个结构体类型 Student,用于存储每个学生的数据。在 main() 函数中,我们先声明一个包含 5 个 Student 类型元素的数组 stu,用于存储输入的学生数据。然后,我们使用 for 循环从键盘输入每个学生的数据,并将其存储到 stu 数组中。
接下来,我们使用 for 循环遍历 stu 数组,查找高数成绩最低的学生。为了方便比较,我们先将第一个学生设置为高数成绩最低的学生,然后依次与其他学生比较,若发现比当前最低分更低的学生,则更新最低分和对应学生的下标。
最后,我们使用 printf() 函数输出高数成绩最低的学生的学号、姓名和高数成绩。其中,%.1f 表示只保留一位小数的浮点数输出。
阅读全文