设计一个结构休用于表示学生的信息,包括学号、姓名和年龄。编三一个程序,从键盘输入若干个学生的信息,存储到结构体数组中,并输出年龄最大的学生的学号和姓名。 输入:从键盘输入一个整数 n (1<=n<=100),表示学生人数。接下来输入 口 行,每行包含一 ^学生的信息,格式如下:学号(12位)姓名(不含空格日不超过20位) 年路(教数了一款很之0555 间用空格隔开。 输出:输出年龄最大的学生的学号和姓名,用空格隔开
时间: 2024-02-13 14:07:31 浏览: 79
运用结构体数组与输入函数进行存放学生的学号姓名等数据
4星 · 用户满意度95%
好的,我来帮你解决这个问题。以下是实现该程序的代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 100
#define MAX_NAME_LEN 20
#define MAX_ID_LEN 12
// 学生信息结构体
typedef struct {
char id[MAX_ID_LEN+1];
char name[MAX_NAME_LEN+1];
int age;
} Student;
int main() {
int n;
Student students[MAX_STUDENTS];
// 读入学生信息
printf("请输入学生人数:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第 %d 个学生的信息(学号 姓名 年龄):", i+1);
scanf("%s %s %d", students[i].id, students[i].name, &students[i].age);
}
// 寻找年龄最大的学生
int max_age = 0;
int max_age_idx = 0;
for (int i = 0; i < n; i++) {
if (students[i].age > max_age) {
max_age = students[i].age;
max_age_idx = i;
}
}
// 输出年龄最大的学生的信息
printf("年龄最大的学生是:%s %s\n", students[max_age_idx].id, students[max_age_idx].name);
return 0;
}
```
这个程序使用了一个 `Student` 结构体来表示学生信息,其中包括学号、姓名和年龄三个字段。在 `main` 函数中,首先读入学生人数,然后使用一个循环读入每个学生的信息,并存储到结构体数组 `students` 中。接着,程序使用另一个循环遍历整个数组,寻找年龄最大的学生,并记录该学生在数组中的下标。最后,程序输出年龄最大的学生的学号和姓名。
需要注意的是,程序中使用了 `#define` 来定义一些常量,如 `MAX_STUDENTS` 表示最大学生人数,`MAX_NAME_LEN` 表示姓名的最大长度,`MAX_ID_LEN` 表示学号的最大长度。这样做的好处是可以方便地调整这些常量的值,而不需要修改程序中的具体代码。
阅读全文