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

题目描述

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

输入

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

输出

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

样例输入

复制

3
Zhangling 1983 2 4
Wangliang 1983 12 11
Fangfang 1985  6 1

样例输出

复制

Fangfang 1985-06-01

代码 

#include<stdio.h>

typedef struct
{
    int year;
    int mouth;
    int day;
}birth;
typedef struct{
    char name[20];
    birth birthday;
}people[10];
people p;

int young(birth a,birth b){            //比较 年 月 日 
    if(a.year > b.year){
        return 1;
    }else if(a.year < b.year){
        return -1;
    }else
    {
        if(a.mouth > b.mouth){
            return 1;
        }else if(a.mouth < b.mouth){
            return -1;
        }else
        {
            if(a.day > b.mouth){
                return 1;
            }else if(a.mouth < b.mouth){
                return -1;
            }
            else return 0;
        }
    }
}

int main()
{
    int n;
    int i=0;
    int minyoung =0;
    int count;
    scanf("%d",&n);
    count=n;
    while(n--){
        scanf("%s%d %d %d",p[i].name,&(p[i].birthday.year),&(p[i].birthday.mouth),&(p[i].birthday.day));
        i++;
    }
    for(i=1;i<count;i++){
        if(young(p[i].birthday,p[i-1].birthday)>0){
            minyoung = i;             //  获取 最小的 年月日的下标
        }
    }
    printf("%s %d-%02d-%02d",p[minyoung].name,p[minyoung].birthday.year,p[minyoung].birthday.mouth,p[minyoung].birthday.day);
    return 0;

}

问题一 : 补零

printf("%04d", 1);
结果是:      0001

%后面的 0 表示不够的位数补零,4是总位数 

问题二 :比较年月日的大小

三个  if(){....} else{.....} 语句嵌套

问题三 : 结构体的设置

将三个整形变量放在一个结构体中是个明智选择,如果放在一个结构体中(我就试过了)比较年月日大小的时候无法操作(原谅我的能力不够,太笨就直说嘛!), 而将年月日结构体和姓名变量放在另一个结构体中就好操作了。 

好吧!其实也是可以操作的,那就不需要比较年月日的函数young(); 了,也不需要结构体数组了(看的其他人的,看来小生还是太笨)。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值