ZZULIOJ 1181: 谁的年龄最小(结构体专题)

题目描述

设计一个结构体类型,包含姓名、出生日期。其中出生日期又包含年、月、日三部分信息。输入n个好友的信息,输出年龄最小的好友的姓名和出生日期。

输入

首先输入一个整数n(1<=n<=10),表示好友人数,然后输入n行,每行包含一个好友的信息:姓名(不超过20位)以及三个整数,分别表示出生日期的年月日。

输出

输出年龄最小的好友的姓名和出生日期,用空格隔开,出生日期的输出格式见输出样例。

样例输入 Copy

3

Zhangling 1983 2 4

Wangliang 1983 12 11

Fangfang 1985 6 1

样例输出 Copy

Fangfang 1985-06-01

方法一:

#include
#include
struct FRIDEND{
	char Name[20];
	int year,month,day;
};
int main()
{
	struct FRIDEND fri,max;
	max.year=0;
	max.month=0;
	max.day=-1;
	int n;
	scanf("%d",&n);
	while(n--)
	{
		scanf("%s %d %d %d",fri.Name,&fri.year,&fri.month,&fri.day);
		if(fri.year==max.year)
		{
			if(fri.month==max.month)
			{
				if(fri.day>max.day)
					max=fri;
			}
			else if(fri.month>max.month)
				max=fri;
		}
		else if(fri.year>max.year)
			max=fri;
	}
	printf("%s %04d-%02d-%02d",max.Name,max.year,max.month,max.day);
	return 0;
}

方法二:

#include
#include
#include
typedef struct student{
	char name[30];
	int a,b,c;
}STU;
int main()
{
	STU stu,max;
	int n;
	max.a=0;
	max.b=0;
	max.c=-1;
	scanf("%d",&n);
	while(n--)
	{
		scanf("%s",stu.name);
		scanf("%d %d %d",&stu.a,&stu.b,&stu.c);
		if(stu.a==max.a)
		{
			if(stu.b==max.b)
			{
				if(stu.c>max.c)
					max=stu;
			}
			else if(stu.b>max.b)
				max=stu;
		}
		else if(stu.a>max.a)
			max=stu;
	}
	printf("%s ",max.name);
	printf("%04d-%02d-%02d",max.a,max.b,max.c);
	return 0;
} 

 

你可能感兴趣的:(zzulioj,zzulioj,1181)