| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 984 人关注过本帖
标题:计算10000天的日期,看看那里错了???????
只看楼主 加入收藏
haohaoxue
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-6-9
收藏
 问题点数:0 回复次数:3 
计算10000天的日期,看看那里错了???????

# include<iostream>
using namespace std;
int main()
{
int year,month,ri,i,d1=0,d,d2,day,j;
int a[12]={0,31,59,90,120,151,181,212,243,273,304,334};
int b[12]={0,31,60,91,121,152,182,213,244,274,305,335};
cin>>year>>month>>ri;
d=0;d1=0;d2=0;
if((year%4==0&&year%100!=0)||(year%400==0))
{ d1=b[month-1]+ri;
d=366-d1;
}
else
{
d1=a[month-1]+ri;
d=365-d1;
}
i=year+1;
while(d<=10000)
{

if((i%4==0&&i%100!=0)||(i%400==0))
{ d=d+366;
if(d>10000){d=d-366;break;}
}
else{
d=d+365;
if(d>10000){d=d-365;break;}
}
i++;
}

d2=10000-d;
if(d2==0)
{
cout<<i-1<<"-"<<12<<"-"<<31;
}
else

{ cout<<i<<"-";
if((i%4==0&&i%100!=0)||(i%400==0))
{ if(d2<=b[11])
{for(j=0;j<11;j++)
{
if(d2>=b[j]&&d2<b[j+1])
{cout<<j+1<<"-";
day=d2-b[j];
}
}
} else
{ cout<<12<<"-";
day=d2-335;}

cout<<day;
}
else
{ if(d2<=a[11])
{
for(j=0;j<11;j++)
{
if(d2>=a[j]&&d2<=a[j+1])
{cout<<j+1<<"-";
day=d2-a[j];
}
}
}
else {cout<<12<<"-";day=d2-334;}
cout<<day;
}
}
return 0;
}

搜索更多相关主题的帖子: int std using month main 
2007-09-17 15:47
haohaoxue
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-6-9
收藏
得分:0 

# include<iostream>
using namespace std;
int main()
{
int year,month,ri,i,d1=0,d,d2,day,j;
int a[12]={0,31,59,90,120,151,181,212,243,273,304,334};
int b[12]={0,31,60,91,121,152,182,213,244,274,305,335};/*用数组保存1到11月的天数*/
cin>>year>>month>>ri;
d=0;d1=0;d2=0;
if((year%4==0&&year%100!=0)||(year%400==0))/*判断是否闰年*/
{ d1=b[month-1]+ri;
d=366-d1;
}
else
{
d1=a[month-1]+ri;
d=365-d1;
}/*计算输入的当年的剩下的天数*/
i=year+1;
while(d<=10000)
{

if((i%4==0&&i%100!=0)||(i%400==0))
{ d=d+366;
if(d>10000){d=d-366;break;}
}
else{
d=d+365;
if(d>10000){d=d-365;break;}
}
i++;
}/*计算不超过10000天但和10000天差不到1年的年数*/

d2=10000-d;
if(d2==0)
{
cout<<i-1<<"-"<<12<<"-"<<31;/*这一行是判断刚好10000天的情况*/
}
else

{ cout<<i<<"-";
if((i%4==0&&i%100!=0)||(i%400==0))
{ if(d2<=b[11])
{for(j=0;j<11;j++)
{
if(d2>=b[j]&&d2<b[j+1])
{cout<<j+1<<"-";
day=d2-b[j];
}
}
} else
{ cout<<12<<"-";
day=d2-335;}

cout<<day;
}
else
{ if(d2<=a[11])
{
for(j=0;j<11;j++)
{
if(d2>=a[j]&&d2<=a[j+1])
{cout<<j+1<<"-";
day=d2-a[j];
}
}
}
else {cout<<12<<"-";day=d2-334;}
cout<<day;
}/*最后这几行是计算最后那年的月和日*/
}
return 0;
}


学,学,死了也要学!没有理由不学!没有理由不爱C++!
2007-09-17 15:55
haohaoxue
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-6-9
收藏
得分:0 
这道题的输入是年,月,日,
输出是10000天后的年,月,日!

学,学,死了也要学!没有理由不学!没有理由不爱C++!
2007-09-17 15:56
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
估算加二分搜索会简单一些



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918]C++编写的Windows界面游戏[/url]
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge):[/url] http://yzfy.org/
2007-09-17 16:10
快速回复:计算10000天的日期,看看那里错了???????
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018360 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved