输入当前日期和某人的出生月日,输出下一个生日距离今天还有多少天。
答:
代码如下:
#include <stdio.h>
int month_days(int year,int month)//当前月份天数获取函数
{
switch(month)
{
case 1:return 31;
case 2:
if(year%400==0||year%4==0&&year%100!=0)
return 29;//若是闰年,则2月有29天
else
return 28;//若不是闰年,则2月有28天
case 3:return 31;
case 4:return 30;
case 5:return 31;
case 6:return 30;
case 7:return 31;
case 8:return 31;
case 9:return 30;
case 10:return 31;
case 11:return 30;
case 12:return 31;
}
return 0;
}
int days(int begin_year,int begin_month,int begin_day,int end_month,int end_day)
{//计算两个日期间的天数的函数
int sum=0;//初始化天数
if(begin_month==end_month&&begin_day<=end_day)//若是同一个月,且开始日期小于结束日期(今年还没过生日)
sum=end_day-begin_day;//则直接返回结束日期-开始日期
else
{//若不是同一个月;或者是同一个月,但开始日期大于结束日期(今年已经过完生日),则对每个月份的天数进行累加
sum+=month_days(begin_year,begin_month)-begin_day;//加上当前月份剩余的天数
if(++begin_month>12)//继续下一个月,若下个月份大于12
{//则转到明年的1月份
begin_month=1;
begin_year++;
}
while(begin_month!=end_month)//直到月份与结束月份相同,结束循环
{
sum+=month_days(begin_year,begin_month);//加上当前月份的天数
if(++begin_month>12)//继续下一个月,若下个月份大于12
{//则转到明年的1月份
begin_month=1;
begin_year++;
}
}
sum+=end_day;//最后加上结束月份的天数,即end_day
}
return sum;//返回天数
}
int main()
{
int now_year,now_month,now_day,month,day;
printf("请输入当前日期(年,月,日):");
scanf("%d%d%d",&now_year,&now_month,&now_day);
printf("请输入出生月日:");
scanf("%d%d",&month,&day);
printf("下一个生日距离今天还有%d天\n",days(now_year,now_month,now_day,month,day));
return 0;
}
【考点】本题考查C语言--程序设计综合运用。
扫描微信二维码,添加您的专属老师为好友
您在考试中遇到任何问题,老师都会帮您解答
您希望我们通过哪种方式与您联系?
您已选择电话/微信/QQ的联系方式,课程顾问会尽快联系您!
您已选择微信联系方式,课程顾问会尽快添加您的微信,请您确认通过!
您已选择QQ联系方式,课程顾问会尽快添加您的QQ,请您确认通过!
您已选择电话联系方式,课程顾问会尽快联系您!
您已选择“不联系”,课程顾问不会主动联系您。
如果后续您有需求,可以在个人中心主动添加销售微信或拨打客服电话:400-111-9811