题目描述
输入一个学生的生日(年,月,日)和当前日期(年、月、日),计算该生的实足年龄(?岁零?个月)并输出,如果没有零0个月,不用显示。
输入描述:
输出描述:
输出该生的实足年龄(?岁零?个月),如果没有零0个月,不用显示,详见样例。链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网
题目描述
输入一个学生的生日(年,月,日)和当前日期(年、月、日),计算该生的实足年龄(?岁零?个月)并输出,如果没有零0个月,不用显示。
输入描述:
输出描述:
输出该生的实足年龄(?岁零?个月),如果没有零0个月,不用显示,详见样例。
代码
#include<stdio.h>
int main()
{
int y0,m0,d0;
int y1,m1,d1;
int y,m,d;
scanf("%d%d%d",&y0,&m0,&d0);
scanf("%d%d%d",&y1,&m1,&d1);
if(d1<d0)
{
m1--;
switch(m1)
{
case 2:d=d1+28-d0;break;
case 4:d=d1+30-d0;break;
case 6:d=d1+30-d0;break;
case 9:d=d1+30-d0;break;
case 11:d=d1+30-d0;break;
}
}
else
{
d=d1-d0;
}
if(m1<m0)
{
y1--;
m=m1+12-m0;
y=y1-y0;
}
else
{
m=m1-m0;
y=y1-y0;
}
if(m==0)
{
printf("%d岁",y);
}
else{ printf("%d岁零%d个月",y,m);}
return 0;
}
这段代码是用于计算学生的实足年龄并输出的程序。
程序首先定义了一些变量,包括学生的生日(y0、m0、d0)、当前日期(y1、m1、d1)、年龄(y)、月份(m)和日期(d)。
然后,程序通过scanf函数分别读取学生的生日和当前日期。
接下来,程序使用if语句判断当前日期中的日期(d1)是否小于生日中的日期(d0)。如果是,则表示生日的日期已经过了当前日期的日期,需要将月份(m1)减一,并根据不同的月份(2、4、6、9、11)计算实际的日期(d)。
如果当前日期中的日期大于等于生日中的日期,则直接计算实际的日期(d)为当前日期减去生日日期。
然后,程序使用另一个if语句判断当前日期中的月份(m1)是否小于生日中的月份(m0)。如果是,则表示当前日期的月份已经过了生日的月份,需要将年份(y1)减一,并计算实际的月份(m)和年龄(y)。
如果当前日期中的月份大于等于生日中的月份,则直接计算实际的月份(m)和年龄(y)为当前日期减去生日日期。
最后,程序根据实际的月份和年龄输出学生的实足年龄。如果实际的月份为0,则只输出年龄;否则,输出年龄和月份。