Ⅰ c語言中,如何比較兩個時間相差幾天
計算兩個年月日之間的天數,思路是分別算出日期的總天數然後相減。
要考慮閏年的情況,判斷閏年的口訣:4年一閏,100年不閏,400年再閏。
((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
網上找了一個(偷懶= =!),修改下如下:
#include <stdio.h>
int sum(int y,int m,int d)
{
unsigned char x[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i,s=0;
for(i=1;i<y;i++)
if(i%4==0 && i%100!=0 || i%400==0)
s+=366;//閏年
else
s+=365;//平年
if(y%4==0 && y%100!=0 || y%400==0)
x[2]=29;
for(i=1;i<m;i++)
s+=x[i];//整月的天數
s+=d;//日的天數
return s;//返回總天數,相對公元1年
}
void main()
{
unsigned char y1,m1,d1,y2,m2,d2;
int s1,s2;
printf("輸入第一個年 月 日:");
scanf("%d %d %d",&y1,&m1,&d1);
printf("輸入第二個年 月 日:");
scanf("%d %d %d",&y2,&m2,&d2);
s1=sum(y1,m1,d1);
s2=sum(y2,m2,d2);
if (s1 > s2)
printf("相差天數:%ld ",s1-s2);
else
printf("相差天數:%ld ",s2-s1);
}
Ⅱ c語言題目 計算時間相減
很簡單嘛
#include<stdio.h>
int main()
{
int s_min,s_sec,e_min,e_sec;
printf("Please input the time\n");
scanf("%d:%d %d:%d",&s_min,&s_sec,&e_min,&e_sec);
printf("%d\n",abs((s_min-e_min)*60+s_sec-e_sec));//用個絕對值就OK啦
}
Ⅲ 求C語言程序,我輸入日期(年月日),然後輸入前後加減多少天,得出那個日期是多少
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
main()
{
int year,month,day;
int leapyear=0;//閏年時使用
int daytime=0;
int sum;
static int month_date[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("請輸入日期:(例如:2010 5 27)");
scanf("%d%d%d",&year,&month,&day);
if(year<=0||month>12||month<1)//判斷輸入是否正確
{
printf("Error!\n");
getch();
exit(0);
}
if(year%400==0||(year%4==0&&year%100!=0))//判斷是否為閏年
leapyear=1;//是就加1
if(month==2)//判斷日是否輸入正確,2月是特殊的因為分閏年和平年
{ if((month_date[month-1]+leapyear)<day||day<=0)
{
printf("Error!\n");
getch();
exit(0);
}
}
if(month!=2)//當輸入不是2月時,判斷輸入
{
if(month_date[month-1]<day||day<=0)
{
printf("Error!\n");
getch();
exit(0);
}
}
printf("\n請輸入天數:");
scanf("%d",&daytime);//輸入第N天後
if(daytime<0)
{
printf("Error!\n");
getch();
exit(0);
}
sum=daytime+day;//當前日期與N天相加
do
{
if(month==2)//判斷當月是不是二月份
month_date[month-1]+=leapyear;
if(sum>month_date[month-1])
{
sum-=month_date[month-1];
month++;//超過當月天數,加一個月
if(month==13)//當月份超過12月時,重新返到1月
{
year++;//加一年
if(year%400==0||(year%4==0&&year%100!=0))//判斷加一年後是不是閏年
leapyear=1;
else
leapyear=0;//不是閏年則為0
month=1;//因為12月的下一個月是1月
}
}
}while(sum>month_date[month-1]);//當加起來的天數少於當月的天數就停止循環
day=sum;
printf("\n第%d天後是%d %d %d",daytime,year,month,day);//輸出
getch();
}
Ⅳ 時間加減 C語言
在VC中我是這樣弄的:
SYSTEMTIME time;
::GetSystemTime(&time);\\取當前時間,time為一個臨時的變數
CTime now=time;\\將當前時間存到CTime變數中
\\輸入要進行對比的時間存入time中,比如下面(對比時間是2006年8月20日):
time.wYear=2006;
time.wMonth=8;
time.wDay=20;
CTime cmptime=time;\\將要對比的時間放到另一個CTime變數中
CTimeSpan overtime=now-cmptime;\\比較時,兩時間直接作差,保存在CTimeSpan變數中,這個值有正負,overtime雖然是CTimeSpan類型的,但是用法和CTime一樣
int overdays=overtime.GetDays();\\取天數差距,本例中就為9(今天是8月29日),如果剛才now-cmptime換成cmptime-now,現在的值就是-9
int overdays=overtime.GetMonths();同上,取月差距,其他方法一樣,年,分,秒都能比較
自己回去試一試吧,應該有滿意的效果!
我也是琢磨了很長時間才弄出來,個人覺得算是比較方便的方法了,正如你所說,時間的計算比較復雜,容易出錯,不如讓提供好的MFC類對時間進行處理,省去不必要的麻煩!
Ⅳ c語言中時間處理
穩定超頻,要看是什麼CPU了,主板,電源,散熱器,都很重要,因為超頻後功耗變高,對主板也是一種考驗,看主板CPU供電相數,電源功率,功耗變高,溫度也會變高了,好的散熱器才能壓的住,一般CPU超頻都有一個最大電壓值,一般來說,電壓相對低的,能達到更高的倍頻或者外頻的CPU體質比較好,再一個是穩定性,超頻後要經過各種測試,穩定的同時也要控制溫度。一般CPU要注意的就是CPU電壓,防掉電自動加壓,倍頻或者外頻數值。
Ⅵ C語言計算兩個時間之間的時間差,精確到秒。 現在我用的是time_t來計算的,但是我發現這個tim
第一個時間相對於1900-01-01 00:00:00是多少秒
第二個時間相對於1900-01-01 00:00:00是多少秒
再相減就OK
Ⅶ c語言時間函數的具體使用方法,時間的加減
#include<stdio.h>
#include<time.h>
intmain()
{
time_trawtime;
structtm*timeinfo;
time(&rawtime);
timeinfo=localtime(&rawtime);
printf("Thecurrentdate/timeis:%s",asctime(timeinfo));
return0;
}
說明:
time_t // 時間類型(time.h 定義)
struct tm { // 時間結構,time.h 定義如下:
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
}
time ( &rawtime ); // 獲取時間,以秒計,從1970年1月一日起算,存於rawtime
localtime ( &rawtime ); //轉為當地時間,tm 時間結構
asctime() // 轉為標准ASCII時間格式:
//就是直接列印tm,tm_year 從1900年計算,所以要加1900,月tm_mon,從0計算,所以要加1