“姓名”(最多20个字符)、 “生日”(包括“年”、“月”、“日”)、 “电话号码”、 “家庭地址”(最多50个字符)。 定义一个嵌套的结构类型,输入n(n<10)个学生信息,再按照他们的年龄从小到大的顺序输出。
时间: 2023-10-02 18:08:40 浏览: 62
可以定义一个结构体类型`student`来表示学生信息,其中包括姓名、生日、电话号码和家庭地址。然后定义一个数组类型`student_arr`来存储n个学生的信息,最后按照年龄从小到大的顺序排序并输出。
以下是示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_ADDR_LEN 50
#define MAX_STUDENT_NUM 10
struct date {
int year;
int month;
int day;
};
struct student {
char name[MAX_NAME_LEN];
struct date birthday;
char phone[12];
char address[MAX_ADDR_LEN];
};
void sort_student_by_age(struct student *arr, int n)
{
int i, j;
struct student tmp;
for (i = 0; i < n-1; i++) {
for (j = i+1; j < n; j++) {
if (arr[i].birthday.year > arr[j].birthday.year ||
(arr[i].birthday.year == arr[j].birthday.year && arr[i].birthday.month > arr[j].birthday.month) ||
(arr[i].birthday.year == arr[j].birthday.year && arr[i].birthday.month == arr[j].birthday.month && arr[i].birthday.day > arr[j].birthday.day)) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
}
int main()
{
int n, i;
struct student student_arr[MAX_STUDENT_NUM];
printf("请输入学生人数:");
scanf("%d", &n);
printf("请依次输入每个学生的姓名、生日(年 月 日)、电话号码、家庭地址:\n");
for (i = 0; i < n; i++) {
scanf("%s %d %d %d %s %s", student_arr[i].name, &student_arr[i].birthday.year, &student_arr[i].birthday.month, &student_arr[i].birthday.day, student_arr[i].phone, student_arr[i].address);
}
sort_student_by_age(student_arr, n);
printf("按年龄从小到大排序后的学生信息如下:\n");
for (i = 0; i < n; i++) {
printf("%s %d-%02d-%02d %s %s\n", student_arr[i].name, student_arr[i].birthday.year, student_arr[i].birthday.month, student_arr[i].birthday.day, student_arr[i].phone, student_arr[i].address);
}
return 0;
}
```