2014-03-12 68 views
0

我想減去兩個時間間隔。這裏一個時間間隔是5小時30分鐘,其他時間是當前時間。代碼如下所示。減去兩個時間間隔

main() 
{ 
int Time1; 
int Time2; 
int hour=10; 
int minute=5; 
int second=13; 
int h; int m; 
int Ntime; 
Time1=(60*5)+(30); 
Time2=60*hour+minute; 
Ntime=Time2-Time1; 
m=(Ntime%60); 
    Ntime=Ntime/60; 
    h=(int)(Ntime); 
printf("hour after subtraction is : %d hour %d min",h,m) 

} 
+0

在第二我怎麼可以結合減去小時和分鐘 – RKNAYAK

回答

0

%操作者是指對於僅採用整數值。它不會與double變量一起使用。 你的代碼更改爲: Ntime = (((int)Ntime%60)/100 + (Ntime/60));

+0

我已經改變。但它沒有按預期工作 – RKNAYAK

0

改變你的計算n時間來的聲明中,

Ntime=((float)((int)Ntime%60)/100+(Ntime/60)); 

需要類型轉換爲浮動/雙否則/ 100將導致整數所以小數部分將被截去。

1

我沒有看過您的程序中的任何邏輯錯誤,但是您發佈的錯誤是由於mod運算符即%期望操作數爲整數。所以如果你用這種方式修改你的代碼,它應該刪除錯誤。

main() 
{ 
int Time1; 
int Time2; 
int hour=10; 
int minute=5; 
int second=13; 
int h; int m; 
int Ntime; //double has been changed to int 
double Ntime2; 
Time1=(3600*5)+(60*30); 
Time2=(3600*hour)+(60*minute)+second; 
Ntime=Time2-Time1; 
Ntime2=((double)((Ntime%60)/100) + (double)(Ntime/60)); 

h=(int)(Ntime2); 
m=((Ntime2 - (double)h)*100); 
printf("hour after subtraction is : %d hour %d min",h,m) 
} 

您的代碼中涉及太多的類型轉換,您應該尋找更簡單的方法來執行此操作。查看time.h頭文件,你可能會發現一些有用的東西。

+0

我已經改變了代碼。以上代碼工作正常 – RKNAYAK