C语言:求日期的下一天程序

2025-03-18 10:23:27
推荐回答(3个)
回答1:

已经修改。另外要想理想运行,输入就用cin>>,scanf输入的会造成显示混乱
#include
#include
#include
using
namespace
std;
int
IsLeapYear(int
year)
{
if(year%4==0)
{
if(year%100==0&&year%400==0)
return
1;
else
return
0;
}
else
return
0;
}
int
getlast_day(int
month,
int
year)
{
switch
(month)
{
case
1:
case
3:
case
5:
case
7:
case
8:
case
10:
case
12:
return
31;
break;
case
2:
if(
IsLeapYear(year))
return
29;
else
return
28;
break;
default:
return
30;
break;
}
}
int
check_day(int
last_day,
int
day)
{
if(day>last_day||day<=0)//invalid
return
0;
else
return
1;
}
void
next_day(int
year,
int
month,
int
day)
{
if(day+1<=getlast_day(month,year))
printf("Next
Day:
%d/%d/%d
",year,month,day+1);
else
{
if(month+1<=12)
printf("Next
Day:
%d/%d/%d
",year,month+1,1);
else
printf("Next
Day:
%d/%d/%d
",year+1,1,1);
}
}
void
main()
{
int
year,month,day;
char
flag;
do
{
printf("Input
Year\n");
scanf("%d",&year);
printf("Input
Month\n");
scanf("%d",&month);
printf("Input
Day\n");
scanf("%d",&day);
if(!check_day(getlast_day(month,
year),
day))
{
printf("Day
Input
Error.
Input
Please[1
-
31]
integerInput
Day\n");
scanf("%d",&day);
}
else
{
next_day(year,
month,
day);
printf("要终止程序吗?(Y/N)
\n");
scanf("%c",&flag);
if(flag=='Y'||flag=='y')
break;
}
}
while(1);
system("pause");
}

回答2:

已经修改。另外要想理想运行,输入就用cin>>,scanf输入的会造成显示混乱
#include
#include
#include
using namespace std;
int IsLeapYear(int year)
{
if(year%4==0)
{
if(year%100==0&&year%400==0)
return 1;
else
return 0;
}
else
return 0;
}
int getlast_day(int month, int year)
{
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:

return 31;
break;

case 2:

if( IsLeapYear(year))
return 29;
else
return 28;
break;

default:
return 30; break;
}
}
int check_day(int last_day, int day)
{
if(day>last_day||day<=0)//invalid
return 0;
else
return 1;

}
void next_day(int year, int month, int day)
{
if(day+1<=getlast_day(month,year))
printf("Next Day: %d/%d/%d ",year,month,day+1);
else
{
if(month+1<=12)
printf("Next Day: %d/%d/%d ",year,month+1,1);
else
printf("Next Day: %d/%d/%d ",year+1,1,1);
}
}

void main()
{
int year,month,day;
char flag;
do
{
printf("Input Year\n");
scanf("%d",&year);
printf("Input Month\n");
scanf("%d",&month);
printf("Input Day\n");
scanf("%d",&day);
if(!check_day(getlast_day(month, year), day))
{
printf("Day Input Error. Input Please[1 - 31] integerInput Day\n");
scanf("%d",&day);
}
else
{
next_day(year, month, day);
printf("要终止程序吗?(Y/N) \n");
scanf("%c",&flag);
if(flag=='Y'||flag=='y')
break;
}
}
while(1);
system("pause");
}

回答3:

1.结构体定义最后有个分号容易丢.
struct
date
{...};
//注意最后要有个分号.
2.printf("tomorrow
is:%.2i%.2i%.2i",dateupdate.year,dateupdate.month,dateupdate.day);
//里面应该是nextday.year,netxtday.month,nextday.day
3.还有个问题,在numberofdays函数中,判断闰年的时候if(d.year%4==0&&d.year%100!=0||d.year%400==0&&d.month==2),应该是if((d.year%4==0&&d.year%100!=0||d.year%400==0)&&d.month==2),不然非二月也会判断为29天.
4.建议:再加一个判断输入错误,如输入2008
4
32,提示超出范围.