永发信息网

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

答案:2  悬赏:0  手机版
解决时间 2021-01-25 05:34
利用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

└—————————————————┘

请写出英文的注释~~~我会给加分的>.<谢谢咯
最佳答案
已经修改。另外要想理想运行,输入就用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");
}
全部回答
1.结构体定义最后有个分号容易丢. struct date {...}; //注意最后要有个分号. 2.printf(&quot;tomorrow is:%.2i%.2i%.2i&quot;,dateupdate.year,dateupdate.month,dateupdate.day); //里面应该是nextday.year,netxtday.month,nextday.day 3.还有个问题,在numberofdays函数中,判断闰年的时候if(d.year%4==0&amp;&amp;d.year%100!=0||d.year%400==0&amp;&amp;d.month==2),应该是if((d.year%4==0&amp;&amp;d.year%100!=0||d.year%400==0)&amp;&amp;d.month==2),不然非二月也会判断为29天. 4.建议:再加一个判断输入错误,如输入2008 4 32,提示超出范围.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
水痘,邪郁肺卫证的首选方剂是()A.解肌透痧汤
德国莱比锡电信应用技术大学怎么样?? 不要
为什么越脏的衣服 在洗的时候洗衣粉的泡沫就
祥凯口腔地址好找么,我有些事要过去
德敏物流停车场地址好找么,我有些事要过去
一根铁丝长10米,第一次剪去全长的五分之一,第
外汇经纪人工资收入多少
火链财经怎么样?求各位大神指点
单选题下列我国古代的科技著作哪一组中的两项
在古文中,‘天才’这个词怎么说
有一杯糖水100克,其中糖占糖水的五分之一,现
【神兵小将第三部天心恋】神兵小将天心恋四
吃消摇丸能去斑吗?
普尔口腔专科医院怎么去啊,我要去那办事
泰和县停车场地址在什么地方,想过去办事
推荐资讯
东方大酒店(玉林市博白县)地址在什么地方,想
骆林干殷红梅
停车场(怡华苑小区东南)地址在哪,我要去那里
哪里产水蜜桃最好吃
急!!!!!!!老师要我们摘取一篇关于坚强
编织人生手工编织网围巾怎样钩菠咯围巾
深圳市有天音移动营业厅吗?
关与大灾难要心中有他人的名言
闪迪32G TF卡插入电脑有图标显示,无法打开,
【find的过去式】find的原形、三单、ing形式
联想地址有知道的么?有点事想过去
三星grand2怎么样清理才能运行不卡
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?