#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; }
时间: 2023-07-31 15:08:09 浏览: 256
这是一个用于输入、输出学生信息和求成绩最高学生的序号的程序。下面是程序的具体实现:
```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) {
int i;
for (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) {
int i;
printf("学号\t姓名\t性别\t出生日期\t成绩\n");
for (i = 0; i < n; i++) {
printf("%d\t%s\t%c\t%d.%d.%d\t%.1f\n", s[i].num, s[i].name, s[i].sex, s[i].birthday.year, s[i].birthday.month, s[i].birthday.day, s[i].score);
}
}
int maxarr(STUDENT s[], int n) {
int i, max = 0;
for (i = 1; i < n; i++) {
if (s[i].score > s[max].score) {
max = i;
}
}
return max;
}
int main() {
STUDENT b[5];
int n;
inputarr(b, 5);
n = maxarr(b, 5);
outputarr(b, 5);
printf("第%d个同学的成绩最高。\n", n + 1);
return 0;
}
```
这个程序定义了两个结构体:`DATE` 和 `STUDENT`,其中 `STUDENT` 结构体包括了学生的学号、姓名、性别、出生日期和成绩。程序中使用了三个函数:`inputarr` 用于输入学生信息,`outputarr` 用于输出学生信息,`maxarr` 用于求成绩最高学生的序号。在 `main` 函数中,我们先调用 `inputarr` 输入学生信息,然后调用 `maxarr` 求成绩最高学生的序号,最后调用 `outputarr` 输出学生信息,并输出结果。
希望这个程序对您有所帮助!
阅读全文