求将(1900年至今的秒数)转换成(当前时间)的算法
最好能加点注释。#include <stdio.h>
int time(int x);
int main(void)
{
int y1, time;
printf("Please enter year: ");
scanf("%ld", &y1);
time = time(y1);
printf("1900-%d: = %d", y1, time);
}
int time(int x)
{
int a = 1900;
int b = 60;
int Max;
if(x%4 == 0 && x%100 == 0 && x%400 == 0)
{
Max = b * 60 * 24 * (365+1); //一分钟60秒,一小时60*60,一天*24,一年*356,而闰年+一天
}
else
{
Max = b * 60 * 24 * 365; //一分钟60秒,一小时60*60,一天*24,一年*356;
}
Max *= (x - a); //估计会爆掉...
return Max;
} #define HIGHTIME 21968699 // 21968708 // Jan 1, 1900 FILETIME.highTime
#define LOWTIME 4259332096 // 1604626432 // Jan 1, 1900 FILETIME.lowtime
SYSTEMTIME st;
UINT64 uiCurTime, uiBaseTime, uiResult;
uiBaseTime = ((UINT64) HIGHTIME << 32) + LOWTIME;
uiCurTime = (UINT64)ulTime * (UINT64)10000000;
uiResult = uiBaseTime + uiCurTime;
FileTimeToSystemTime((LPFILETIME)&uiResult, &st);
char buffer;
ZeroMemory(buffer,sizeof(buffer)/sizeof(char));
wsprintf(buffer,TEXT("%i年%i月%i日 %i:%i:%i")\
,st.wYear,st.wMonth,st.wDay,st.wHour+8,st.wMinute,st.wSecond); 新手到处找练习题呢, 照题目写了一个 但是数输入大了就错了,麻烦看看这个算法对不对
#include <stdio.h>
void main()
{
int n,nt,m=0,h=0,y=1,c=31;// n是秒数 nt是天数 m是年数 h是每个闰年+1天 y是月份 j是最后得出那年是否闰年
int jn,jy=1;
int a={31,59,89,120,150,181,212,242,273,303,334,365};
printf("输入查询的秒数\n");
scanf("%d",&n);
nt=n/86400;
while (nt>365)
{
nt=nt-(365+h);
m++;
if ((1900+m)%4==0)
{
if ((1900+m)%100==0)
{
if ((1900+m)%400==0)
{
h=1;
}
else h=0;
}
h=1;
}
}
jn=1900+m; //求出是几年
if ((1900+m)%4==0) //判断这一年是否闰年
{
if ((1900+m)%100==0)
{
if ((1900+m)%400==0)
{
h=1;
}
else h=0;
}
h=1;
}
//判断是这年的几月
while (nt>a+h)
{
y++;
}
jy=y;
// 判断是几天
if(nt>31)
{
nt=(nt-(a+h));
}
printf("%d年%d月%d日\n",jn,jy,nt);
}
谢谢分享,非常喜欢!
页:
[1]