利用Enumeration 和typedef做出"求所输入日期的下一天"的程序.
>enum month{ Jan=1,Feb,Mar,Apr,May,Jun,Aug,Sep,Oct,Nov,Dec};
>typedef enum month month;
做成程序的方法:
1.程序在实行一次后,询问是否终止,在使用者选择终止的情况下终止程序.
通过输入(Y/N)来判定是否终止,不区分Y和N的大小写.
2.在使用者输入错误日期后提示错误信息,并返回且要求再次输入日期
(例如,使用者输入1月32日,则返回重新输入正确的日期)
3.做成程序必须用上以下函数:
1)void next_day(int year, month month, int day)
求下一天的输出函数
2)int IsLeapYear(int year)
求闰年返回的整数函数
闰年的计算方法:
公元纪年的年数可以被4整除,即为闰年;被100整除而不能被400整除为平年;被100整除也可被400整除的为闰年。
如2000年是闰年,而1900年不是。
3)int getlast_day(month month, int year)
求输入的月份最后一天的函数
4)int check_day(int last_day, int day)
判断输入的日子是否在所输入的月份的日期范围内的函数
┌—————输出形态(例)—————┐
Input Year > 2008
Input Month > 10
Input Day > 31
Next Day: 2008/11/1
要终止程序吗?(Y/N) > N
Input Year > 2008
Input Month > 10
Input Day > 0
Day Input Error. Input Please[1 - 31] integerInput Day > 32
Day Input Error. Input Please[1 - 31] integerInput Day > 1
Next Day: 2008/10/2
要终止程序吗?(Y/N) > N
Input Year > 2008
Input Month > 12
Input Day > 31
Next Day: 2009/1/1
要终止程序吗?(Y/N) > Y
press any key to continue
└—————————————————┘
请写出英文的注释~~~我会给加分的>.<谢谢咯
C语言:求日期的下一天程序
答案:2 悬赏:0 手机版
解决时间 2021-01-25 05:34
- 提问者网友:太高姿态
- 2021-01-25 02:16
最佳答案
- 五星知识达人网友:孤独的牧羊人
- 2021-01-25 02:53
已经修改。另外要想理想运行,输入就用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");
}
#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");
}
全部回答
- 1楼网友:刀戟声无边
- 2021-01-25 03:03
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,提示超出范围.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯