注册 登录
编程论坛 C++教室

请问这个程序除了什么问题,没有输出

心剑菩提 发布于 2007-10-03 11:47, 593 次点击
#include <iostream>
#include <string>
using namespace std;
int main()
{
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int n;
int t,i,newyear;
string week[7]={"Monday","Tuesday","Wednesday","Thurday","Friday","Saturday","Sunday"};
while((cin>>n)&&n!=-1)
{ int year=2000;
while(n>365)
{ if(year%4==0 || (year%100!=0 && year%400==0))
t=n-366;
else
t=n-365;
year++;
}
newyear=2000+n/365;
cout<<newyear;
if(year%4==0 || (year%100!=0 && year%400!=0))
a[1]=29;
i=0;
while(t>30)
{
t=t-a[i];
i=i+1;
}

if((n%7)+6>7)
{
week[(n%7)+6]=week[(n%7)+6-7];
}
cout<<year<< "-" <<i<<t<<week[(n%7)+6-1]<<endl;

}
}
8 回复
#2
valentineyzq2007-10-03 14:12
我看不明白。说说你想实现什么功能。
#3
body2022007-10-03 15:41

看了一下楼主的程序,应该实现的功能是:
从2000年1月1号开始,算出经过N天后的年份,月份,还有星期几
我是刚学C,对程序也不是很了解,具体算法也不知道,只是觉得这个循环有点问题:
while(n>365)
{ if(year%4==0 || (year%100!=0 && year%400==0))
t=n-366;
else
t=n-365;
year++;
}
如果输入的数大于365的话,就是个死循环了

#4
chen78062007-10-03 15:43
上来请别人改程序,最好有注释。
#5
zacom2007-10-03 15:58

很想帮下你,但看你的程序看的头痛

#6
lishuqiao2007-10-03 20:51
晕!
太乱了!
删除重建一个工程试下。
#7
eagleboycn2007-10-03 23:02

while(n>365)
{ if(year%4==0 || (year%100!=0 && year%400==0))
t=n-366;
else
t=n-365;
year++;
}
条件永远成立,死循环
建议将计算星期的放前面
这里改用
n-=365/366?

#8
gospark2007-10-03 23:52
稍微加点注释嘛            
#9
心剑菩提2007-10-04 16:12
各位 谢谢了 我的更改结果是 其中计算星期的程序出了问问题
1