ZSTU OJ-4454 招兵买马

本文介绍了一个关于C语言中结构体应用的经典案例——通过排序算法实现对应征者信息的年龄排序。具体地,文章首先引入了快码佳编四兄弟姐妹在沛县遇到的情境,即刘邦正在招兵买马,需要筛选年轻力壮的士兵。随后,详细讲解了如何使用C语言的结构体定义应征者的个人信息,并通过冒泡排序算法实现了按年龄从小到大的排序。该案例不仅加深了读者对于C语言结构体的理解,还展示了结构体在实际问题解决中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                            招兵买马

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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值