c语言编写程序从键盘输入5个学生的信息,包括学生学号、姓名、性别、出生年月及成绩,用结构体数组保存学生的信息,要求用函数实现结构体数组的输入输出及求成绩最高学生的序号。预期输出: 学号:10010 姓名:Liyi 性别:M 出生日期:2000-5-23 成绩:95.0 学号:10020 姓名:Lier 性别:M 出生日期:2001-2-3 成绩:62.5 学号:10030 姓名:Lisan 性别:F 出生日期:2000-10-14 成绩:92.5 学号:10040 姓名:Lisi 性别:F 出生日期:2002-7-23 成绩:87.0 学号:10050 姓名:Liwu 性别:M 出生日期:1999-8-6 成绩:78.0 第1个同学的成绩最高。
时间: 2024-02-14 11:08:00 浏览: 212
好的,这是一个关于C语言的问题,下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STU 5 // 学生数量
struct student {
char id[10]; // 学号
char name[20]; // 姓名
char sex[10]; // 性别
char birth[20];// 出生日期
float score; // 成绩
};
// 输入学生信息
void input_stu(struct student stu[], int n) {
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的信息:\n", i + 1);
printf("学号:");
scanf("%s", stu[i].id);
printf("姓名:");
scanf("%s", stu[i].name);
printf("性别:");
scanf("%s", stu[i].sex);
printf("出生日期(格式为yyyy-mm-dd):");
scanf("%s", stu[i].birth);
printf("成绩:");
scanf("%f", &stu[i].score);
}
}
// 输出学生信息
void output_stu(struct student stu[], int n) {
printf("学号\t姓名\t性别\t出生日期\t成绩\n");
for (int i = 0; i < n; i++) {
printf("%s\t%s\t%s\t%s\t%.1f\n", stu[i].id, stu[i].name, stu[i].sex, stu[i].birth, stu[i].score);
}
}
// 求成绩最高学生的序号
int max_score_stu(struct student stu[], int n) {
float max_score = stu[0].score;
int max_stu_index = 0;
for (int i = 1; i < n; i++) {
if (stu[i].score > max_score) {
max_score = stu[i].score;
max_stu_index = i;
}
}
return max_stu_index;
}
int main() {
struct student stu[MAX_STU];
input_stu(stu, MAX_STU);
output_stu(stu, MAX_STU);
int max_stu_index = max_score_stu(stu, MAX_STU);
printf("第%d个同学的成绩最高。\n", max_stu_index + 1);
return 0;
}
```
上述代码中,通过结构体数组来保存学生信息,通过 `input_stu` 函数输入学生信息,通过 `output_stu` 函数输出学生信息,通过 `max_score_stu` 函数求成绩最高学生的序号。在 `main` 函数中,调用以上三个函数来实现程序功能。
阅读全文