c语言 已知某天日期为,已知今天的日期(年月日),求明天的日期(年月日)...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

已知今天的日期(年月日),求明天的日期(年月日);

要求考虑:

1。月份为12月时,年份应加1且月份变为1

2。天为当月最后一天时,月份应加1且天变为1

3。要求考虑闰年,闰年2月有29天,而非闰年只有28天

==============================================================

花了九牛二虎之力,终于写出来,各位PP!

# include 

//定义一个日期的结构

struct date

{

int year;

int month;

int day;

};

//判断闰年函数的原型

int r_year(int year);

void main()

{

struct date d1;  //今天的日期

struct date d2;  //明天的日期

printf("输入今天的日期,可得到明天的日期\n\n");

printf("\n年:");

scanf("%d",&d1.year);

printf("\n月:");

scanf("%d",&d1.month);

if(d1.month>12 || d1.month<1)

printf("月份无效!");

else

{

printf("\n日:");

scanf("%d",&d1.day);

int flag = r_year(d1.year);

//按月份(三个分支)来判断日期是否有效,有效才调用(引用调用)转换函数

if(d1.month==1 || d1.month==3 || d1.month==5 || d1.month==7 ||

d1.month==8 || d1.month==10 || d1.month==12 )

{

if(d1.day >31 || d1.day <1)

printf("日期无效!");

if(d1.day ==31)    //如果日期是该月最后一天,则明天月份要加1,日期变为1

{

d2.month = d1.month +1;

d2.day =1;

}

else      //否则月份不变,日期加1

{

d2.month =d1.month ;

d2.day = d1.day +1;

}

}

else if (d1.month==4 || d1.month==6 || d1.month==9 || d1.month==11)

{

if(d1.day >30 || d1.day <1)

printf("日期无效!");

if(d1.day ==30)    //如果日期是该月最后一天,则明天月份要加1,日期变为1

{

d2.month = d1.month +1;

d2.day =1;

}

else      //否则月份不变,日期加1

{

d2.month =d1.month ;

d2.day = d1.day +1;

}

}

else if (d1.month ==2)

{

if(flag ==1)

{

if(d1.day >29 || d1.day <1)

printf("闰年,日期无效!");

if(d1.day ==29)    //如果日期是该月最后一天,则明天月份要加1,日期变为1

{

d2.month = d1.month +1;

d2.day =1;

}

else      //否则月份不变,日期加1

{

d2.month =d1.month ;

d2.day = d1.day +1;

}

}

else if(flag ==0)

{

if(d1.day >28 || d1.day <1)

printf("非闰年,日期无效!");

if(d1.day ==28)    //如果日期是该月最后一天,则明天月份要加1,日期变为1

{

d2.month = d1.month +1;

d2.day =1;

}

else      //否则月份不变,日期加1

{

d2.month =d1.month ;

d2.day = d1.day +1;

}

}

}

}

if(d1.month ==12)  //判断月份是否为12月,是,年份加1,月份变成1月,

{

d2.year = d1.year +1;

d2.month =1;

}

else     //否则年份相等,月份在前面已经具体判断,不再作运算

{

d2.year = d1.year ;

//d2.month = d1.month ;

}

printf("\n今天是: %4d 年 %2d 月 %2d 日\n",d1.year ,d1.month,d1.day );

printf("\n明天是: %4d 年 %2d 月 %2d 日\n",d2.year ,d2.month,d2.day );

}

//自定义一个判断闰年的函数

int r_year(int year)

{

int flag;

if((year % 4 ==0 && year % 100 !=0) || year % 400==0)

flag=1;

else

flag=0;

return flag;

}

=============================================================

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值