我想要这个C语言程序结构体friend的成员有姓名、出生日期、电话号码等。输入n(n<10)个朋友的信息,再按他们的年龄从大到小的顺序输出朋友信息。
时间: 2024-02-22 07:59:05 浏览: 63
好的,这是一个实现您需求的C语言程序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_FRIENDS 10
struct Friend {
char name[20];
int birth_year;
int birth_month;
int birth_day;
char phone[20];
};
int main() {
struct Friend friends[MAX_FRIENDS];
int n, i, j;
printf("请输入朋友个数(<= %d):", MAX_FRIENDS);
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("请输入第%d个朋友的姓名、出生日期和电话号码(用空格分隔):", i + 1);
scanf("%s%d%d%d%s", friends[i].name, &friends[i].birth_year, &friends[i].birth_month, &friends[i].birth_day, friends[i].phone);
}
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (friends[i].birth_year < friends[j].birth_year || (friends[i].birth_year == friends[j].birth_year && friends[i].birth_month < friends[j].birth_month) || (friends[i].birth_year == friends[j].birth_year && friends[i].birth_month == friends[j].birth_month && friends[i].birth_day < friends[j].birth_day)) {
struct Friend temp = friends[i];
friends[i] = friends[j];
friends[j] = temp;
}
}
}
printf("按年龄从大到小排序后的朋友信息为:\n");
for (i = 0; i < n; i++) {
printf("%s %d.%d.%d %s\n", friends[i].name, friends[i].birth_year, friends[i].birth_month, friends[i].birth_day, friends[i].phone);
}
return 0;
}
```
这段代码定义了一个`Friend`结构体,包含了姓名、出生日期和电话号码等信息。在程序中,首先要求用户输入朋友个数,并通过循环输入每个朋友的信息。然后,使用双重循环实现按照年龄从大到小的排序,最后输出排序后的朋友信息。
需要注意的是,这里的年龄排序是按照出生日期的先后顺序进行的,因此需要比较年、月、日三个字段的大小关系。
阅读全文