招兵买马
Description
这一日,快码佳编四兄弟姐妹来到了沛县,发现刘邦正在招兵买马。有好多人要应征啊,还有60多岁的老大爷。刘邦当然希望挑选一些年轻力壮的小伙子来当兵。
输入n个应征者的信息,包括姓名、性别、出生年月。要求按年龄从小到大依次输出这些应征者的信息。数据保证没有应征者同年同月出生。
Input
第一行输入一个整数n表示应征者人数(n<=100)
接下来n行,每一行依次输入应征者的姓名、性别、出生年份、出生年月
Output 按年龄从小到大,一行输出一个应征者的原始信息
很简单的一个结构体相关的问题,可以考虑先对每一个应征者的出生年份进行大小排序,然后再对相同年份出生的应征者按月份进行排序。C语言代码见下。
#include<stdio.h>
struct xt
{
char name[90];
char sex[50];
int year;
int month;
};
int main()
{
struct xt s[105],temp;
int t,i,j,k,n;
scanf("%d",&n);
getchar();//最好加上这一句
for(i=0;i<n;i++)
scanf("%s%s%d%d",s[i].name,s[i].sex,&s[i].year,&s[i].month);
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(s[k].year<s[j].year)
k=j;
if(i!=k)
{
temp=s[i];
s[i]=s[k];
s[k]=temp;
}
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
if(s[i].year==s[j].year)
{
if(s[i].month<s[j].month)
{
temp=s[i];
s[i]=s[j];
s[j]=temp;
}
}
}
for(i=0;i<n;i++)
printf("%s %s %d %d\n",s[i].name,s[i].sex,s[i].year,s[i].month);
return 0;
}