编写程序从键盘输入5个学生的信息,包括学生学号、姓名、性别、出生年月及成绩,用结构体数组保存学生的信息,要求用函数实现结构体数组的输入输出及求成绩最高学生的序号。#include<stdio.h> #include<string.h> typedef struct date { int year; int month; int day; }DATE; typedef struct student { int num; char name[20]; char sex; DATE birthday; float score; }STUDENT; void inputarr(STUDENT s[ ], int n); void outputarr(STUDENT s[ ], int n); int maxarr(STUDENT s[ ], int n); int main() { STUDENT b[5]; int n; inputarr(b,5); n=maxarr(b,5); outputarr(b,5); printf("第%d个同学的成绩最高。\n",n+1); return 0; } /********** 三个子函数定义 **********/ /********** Begin **********/ /********** End **********/
时间: 2023-07-05 15:31:11 浏览: 284
下面是实现输入、输出、求成绩最高学生序号的三个函数的代码:
```c
#include <stdio.h>
#include <string.h>
typedef struct date {
int year;
int month;
int day;
} DATE;
typedef struct student {
int num;
char name[20];
char sex;
DATE birthday;
float score;
} STUDENT;
void inputarr(STUDENT s[], int n);
void outputarr(STUDENT s[], int n);
int maxarr(STUDENT s[], int n);
void inputarr(STUDENT s[], int n) {
printf("请输入%d个学生的信息:\n", n);
for (int i = 0; i < n; i++) {
printf("第%d个学生的信息:\n", i+1);
printf("学号:");
scanf("%d", &s[i].num);
printf("姓名:");
scanf("%s", s[i].name);
printf("性别:");
scanf(" %c", &s[i].sex);
printf("生日:(格式:年 月 日)");
scanf("%d%d%d", &s[i].birthday.year, &s[i].birthday.month, &s[i].birthday.day);
printf("成绩:");
scanf("%f", &s[i].score);
}
}
void outputarr(STUDENT s[], int n) {
printf("学生的信息如下:\n");
for (int i = 0; i < n; i++) {
printf("第%d个学生的信息:\n", i+1);
printf("学号:%d\n", s[i].num);
printf("姓名:%s\n", s[i].name);
printf("性别:%c\n", s[i].sex);
printf("生日:%d年%d月%d日\n", s[i].birthday.year, s[i].birthday.month, s[i].birthday.day);
printf("成绩:%.2f\n", s[i].score);
}
}
int maxarr(STUDENT s[], int n) {
int max_index = 0;
for (int i = 1; i < n; i++) {
if (s[i].score > s[max_index].score) {
max_index = i;
}
}
return max_index;
}
int main() {
STUDENT b[5];
int n;
inputarr(b, 5);
n = maxarr(b, 5);
outputarr(b, 5);
printf("第%d个同学的成绩最高。\n", n+1);
return 0;
}
```
程序运行时,先调用 `inputarr` 函数输入学生信息,然后调用 `outputarr` 函数输出学生信息,最后调用 `maxarr` 函数求出成绩最高学生的序号并输出。
在 `inputarr` 函数中,使用结构体数组 `s` 来保存学生信息,使用循环输入每个学生的信息,以实现输入学生信息的功能。
在 `outputarr` 函数中,使用结构体数组 `s` 来保存学生信息,使用循环输出每个学生的信息,以实现输出学生信息的功能。
在 `maxarr` 函数中,使用结构体数组 `s` 来保存学生信息,使用循环遍历每个学生的成绩,找到成绩最高的学生的序号,并返回该序号。
最后在 `main` 函数中,调用三个函数,先调用 `inputarr` 输入学生信息,然后调用 `maxarr` 求出成绩最高学生的序号,最后调用 `outputarr` 输出学生信息和成绩最高学生的序号。
阅读全文