通讯录排序(结构嵌套)

通信录排序。通讯录的结构记录包括:姓名、生日 、电话号码,其中生日 又包括年、月、日这三项。定义一个嵌套的结构类型,输入n(n<10)个联系人的信息,再按他们的年龄从大到小的顺序依次输出其信息。试编写相应的程序。


输入样例:

6
peng 2002 11 09 4
wang 2002 11 08 3
tian 2002 10 09 2
bing 2002 11 09 4
ling 2001 11 09 1
sing 2003 01 10 5


输出样例:

ling 2001 11 09 1
tian 2002 10 09 2
wang 2002 11 08 3
bing 2002 11 09 4
peng 2002 11 09 4
sing 2003 01 10 5


我的答案:

#include<stdio.h>
#define MAXN 80

typedef struct contact {
	char name[MAXN];
	struct birthdate {
		int yy;
		int mm;
		int dd;
	} date;
	char number[MAXN];
} list;

void AgeSorting(list* a, int n);

int main()
{
	list a[MAXN];
	int n;
	scanf("%d", &n);

	for (int i = 0; i < n; i++) {
		scanf("%s %d %d %d %s", a[i].name, &a[i].date.yy, &a[i].date.mm, &a[i].date.dd, a[i].number);
	}
	AgeSorting(a, n);
	for (int i = 0; i < n; i++) {
		printf("%s %02d %02d %02d %s\n", a[i].name, a[i].date.yy, a[i].date.mm, a[i].date.dd, a[i].number);
	}

	return 0;
}

void AgeSorting(list* a, int n)
{
	for (int i = 0; i < n - 1; i++) {
		for (int j = i + 1; j < n; j++) {
			if(a[i].date.yy * 10000 + a[i].date.mm * 100 + a[i].date.dd <= a[j].date.yy * 10000 + a[j].date.mm * 100 + a[j].date.dd){
				continue;
			}
			else {
				list t;
				t = a[i];
				a[i] = a[j];
				a[j] = t;
				continue;
			}
		}
	}
}

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值