该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
已知今天的日期(年月日),求明天的日期(年月日);
要求考虑:
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;
}
=============================================================