foj日历问题

RiweiChen 2011-05-17 09:20:17
题目:http://acm.fzu.edu.cn/problem.php?pid=1303
大意就是输入一个距离2000年一月一号的天数,输出该日期。
我的代码:
#include <iostream>
#include <iomanip>
using namespace std ;
int ifleap(int year)//判断年份
{
int yes=0;
if(((year%4==0)&&(year%100!=0))||(year%400==0))
yes=1;
return yes;
}
int main()
{
int m,d=1;
long date;
int y=2000;//初始年份。
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//月份天数数组。
char *week[7]={ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" , "Saturday"};

while (cin>>date&&date!=-1)
{
y=2000,d=1;
m=(date-1)%7;
if (date==0)
{
m=6;
}
while(date-364-ifleap(y)>0)//先计算年份。
{
date=date-365-ifleap(y);
y++;

}
//跳出后可以确定年份y

if (ifleap(y)==1)
{
month[2]=29;//调整新年份的月数组
}
while (date-month[d]+1>0)//逐个从一月开始寻找月份
{
date=date-month[d];
d++;
}
//调整输出格式。
cout.fill('0');
cout<<y<<'-'<<setw(2)<<d<<'-'<<setw(2)<<date+1<<' '<<week[m]<<endl;



}
return 0;
}

总是WA.自己找的测试数据都没有错误,发现不出错误在哪里。各位路过的大侠们,有时间帮我分析下。。。谢谢啦。。。
...全文
100 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
RiweiChen 2011-06-23
  • 打赏
  • 举报
回复
代码:
#include <iostream>
#include <iomanip>
using namespace std ;
int ifleap(int year)//判断年份
{
int yes=0;
if(((year%4==0)&&(year%100!=0))||(year%400==0))
yes=1;
return yes;
}
int main()
{
int m,d=1;
long date;
int y=2000;//初始年份。
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//月份天数数组。
char *week[7]={ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" , "Saturday"};

while (cin>>date&&date!=-1)
{
month[2]=28;
y=2000,d=1;
m=(date-1)%7;
if (date==0)
{
m=6;
}
while(date-364-ifleap(y)>0)//先计算年份。
{
date=date-365-ifleap(y);
y++;

}
//跳出后可以确定年份y

if (ifleap(y)==1)
{
month[2]=29;//调整新年份的月数组
}
while (date-month[d]+1>0)//逐个从一月开始寻找月份
{
date=date-month[d];
d++;
}
//调整输出格式。
cout.fill('0');
cout<<y<<'-'<<setw(2)<<d<<'-'<<setw(2)<<date+1<<' '<<week[m]<<endl;



}
return 0;
}
RiweiChen 2011-06-23
  • 打赏
  • 举报
回复
虽然大家都没找出来,但是经过若干天后,我偶然重温代码,发现了一个问题,就是在
if (ifleap(y)==1)
{
month[2]=29;//调整新年份的月数组
}
的时候,下次没有把月份给从新置回28天。就是这个问题了。天。
RiweiChen 2011-05-18
  • 打赏
  • 举报
回复
额。。。这么安静。。。。都没有路过的呐。。。

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧