标题:求助:从 1970 年一月一日经过 n 秒,输出这一秒的时刻,我的代码哪里错了? ...
只看楼主
京子酱
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-11-12
结帖率:100%
已结贴  问题点数:20 回复次数:3 
求助:从 1970 年一月一日经过 n 秒,输出这一秒的时刻,我的代码哪里错了?
#include <iostream>

using namespace std;

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main()
{
int judge(int y);
long y=1970,m=1,d=1,h=0,mi=0,s=0,a,b;
long int n;
cin>>n;

s=s+n; //秒位加上n
mi=mi+s/60; //将秒位进到分钟位并保持不进位
s=(s>=60)?(s%60):s; //秒位进位取余
h=h+mi/60; //将分钟位进到小时位并保持不进位
mi=(mi>=60)?(mi%60):mi; //分钟位进位取余
d=d+h/24; //将小时位进位到天并保持天不进位
h=(h>=24)?(h%24):h; //小时位进位取余
a=(m==1||m==3||m==5||m==7||m==8||m==10||m==12);
b=(m==4||m==6||m==9||m==11);
while((m==2&&judge(y)==1&&d>29)||(m==2&&judge(y)==0&&d>28)||(a&&d>31)||(b&&d>30))
{
if(m==2) //判断是否是2月
{
if(judge(y)==1) //判断是否是闰年
{
d-=29;
}
else
{
d-=28;
}
}
else if(a)
{
d-=31;
}
else if(b)
{
d-=30;
}
m++;
if(m>12)
{
m=1;
y++;
}
}
cout<<y<<"-"<<m<<"-"<<d<<endl;
cout<<h<<":"<<mi<<":"<<s<<endl;
return 0;
}

/*****judge函数*********/

int judge(int y)
{
if(((y%4==0)&&(y%100!=0))||(y%400==0))
return 1;
else
return 0;
}
搜索更多相关主题的帖子: include system 
2014-11-20 14:28
京子酱
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-11-12
得分:0 
我输入1297090629,结果输出2010-8-29,14:57:9。可是答案应该是2011-2-7,14:57:9啊。。。是哪里出了问题啊。。
2014-11-20 14:43
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:7 
你看看C标准函数 gmtime 是怎么做的,它的功能和你描述的一样。
2014-11-20 16:33
playyang123
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:70
专家分:332
注 册:2014-11-17
得分:7 
一个月多少天判断对了?     可以反过来写   写出多少年到多少年  算出多少秒
2014-11-20 16:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-438914-1-1.html




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

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