資源簡介
編寫程序計算當前時間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
評論
共有 條評論