请用C语言实现输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。 输入格式: 输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+、-组成的字符串。 输出格式: 按照年龄从大到小输出朋友的信息,格式同输出。 输入样例:
时间: 2024-03-01 13:51:31 浏览: 177
电话本.txt
以下是一份C语言代码,实现了输入n个朋友的信息,按照年龄从大到小的顺序输出通讯录。
```c
#include <stdio.h>
#include <string.h>
struct friend {
char name[11];
int year;
int month;
int day;
char phone[18];
};
int main() {
int n, i, j;
scanf("%d", &n);
struct friend f[n];
for (i = 0; i < n; i++) {
scanf("%s %d/%d/%d %s", f[i].name, &f[i].year, &f[i].month, &f[i].day, f[i].phone);
}
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (f[i].year < f[j].year || (f[i].year == f[j].year && (f[i].month < f[j].month || (f[i].month == f[j].month && f[i].day < f[j].day)))) {
struct friend temp = f[i];
f[i] = f[j];
f[j] = temp;
}
}
}
for (i = 0; i < n; i++) {
printf("%s %04d/%02d/%02d %s\n", f[i].name, f[i].year, f[i].month, f[i].day, f[i].phone);
}
return 0;
}
```
程序中定义了一个结构体`friend`表示一个朋友的信息,包含姓名、生日、电话号码三个成员变量。在主函数中,首先读入朋友的数量n,然后定义长度为n的结构体数组f用于存储n个朋友的信息。接着通过循环依次读入每个朋友的信息,存储到结构体数组中。
然后通过两重循环,对结构体数组进行排序,排序规则为年龄从大到小。最后再通过循环,依次输出已排序的朋友信息。
需要注意的是,生日的格式为“yyyymmdd”,电话号码的长度不超过17位。输出时,生日需要按照“yyyy/mm/dd”的格式输出,其中年份需要补齐4位,月份和日期需要补齐2位。
阅读全文