资源简介
编写程序计算当前时间1秒后的时间
•
例如输入当前时间2006年12月20日19时17分59秒,计算后输出时间是2006年12月20日19时18分00秒。
•
程序要求:
•
程序应该可以运行:通过控制台输入数据,输出数据通过printf 给出;
•
程序结构明了、逻辑清晰;
•
请考虑闰年、月份(大小)等逻辑;
•
程序功能完整;
代码片段和文件信息
#include
#include
#include
int Month_Day[2][12] = {
{31 28 31 30 31 30 31 31 30 31 30 31}
{31 29 31 30 31 30 31 31 30 31 30 31}
};
//判断是否是闰年,是则返回1,否则返回0
int isLeapYear(int y)
{
return ((y % 400 == 0) || ((y % 4 == 0) && (y % 100 != 0)));
}
// 得到下一天的日期,M:月份,0~11日期[0~31]
void getNextDay(int * Yint * Mint * D)
{
int iC1 = 0 iC2 = 0; //记录进位
iC2 = ((*D) + 1) / Month_Day[isLeapYear(*Y)][(*M)];
*D = ((*D) + 1) % Month_Day[isLeapYear(*Y)][(*M)];
iC1 = ((*M) + iC2) / 12;
*M = ((*M) + iC2) % 12;
*Y += iC1;
}
// 得到下一秒的时间,如果返回小时向前的进位
int getNextSec(int * hint * mint * s)
{
int iC1 = 0 iC2 = 0;
iC1 = (*s + 1) / 60;
*s = (*s + 1) % 60;
c2 = (*m + iC1) / 60;
*m = (*m + iC1) % 60;
iC1 = (*h + iC2) / 24;
*h = (*h + iC2) % 24;
return iC1;
}
//得到下一秒的时间
void nextSec(struct tm * st)
{
//得到时间的下一秒,返回进位
int c = getNextSec(& st->tm_hour & st->tm_min & st->tm_sec);
if ( c != 0 ) //如果
{
getNextDay(& st->tm_y
评论
共有 条评论