簡體   English   中英

用c計算和顯示時間

[英]calculating and displaying time in c

我只是在學習C,並且有一個從特定時間開始的課程,我必須添加一定的額外時間,然后顯示新時間。 我已經添加了分鍾,但結果顯示為我正在添加數字。

示例是我從640開始,然后想增加30分鍾,但它顯示為670 ,但我需要它顯示為710 我想要提示/技巧而不是實際的編程,因為我現在想自己嘗試計算。 感謝您的時間。

您要對不是小數點的兩個小數點值應用小數點數學運算。 它們是某種類型的“小時:分鍾”單位,中間印有“:”字符。 C不知道這一點,因此當您將1加到659並期望得到700時,它不會自動溢出分鍾。 相反,您得到660 ,如果該“時間”單位有效的整數類型,則將是無效的值! “分鍾”部分只允許0059

您可以將其與八進制數進行比較。 77是有效的八進制數字,實際的十進制值為63 (十進制)。 將其加1並再次打印將產生100 (八進制),而不是78

由於C在用編入單位進行計數時無法檢測到微小的溢出,因此遵循的正確方法是將輸入轉換為“常規”小數,進行任何所需的計算,然后轉換回“時間”小數。 您可以使用基本模和除法算法來做到這一點-將“時間格式”設置為適當的十進制值很容易,因此從此開始。 然后應用相同的邏輯將十進制轉換回時間。

當然,當您嘗試向其提供“無效”值(例如670 (無效,因為70不能表示分鍾)或2510 (我沒有全天候24小時正確計算-如果需要,請添加此值))時,此方法會中斷。 除了八進制數,編譯器將無法指出錯誤的值。

下面的實際代碼被劇透標簽隱藏。 展示風險自負。

如果您立即將鼠標懸停在它上面:...我很失望。 該代碼是全面而簡短的,上面冗長的解釋花費了大約四倍的時間來編寫。

  #include <stdio.h> 
#define NUMTOMINUTES(x) 100*((x)/60)+((x) % 60) #define MINUTESTONUM(x) (((x) % 100)+60*((x)/100))
int main (void) { int time_a, time_add, time_b;
time_a = 630; time_add = 40; time_b = MINUTESTONUM(time_a) + MINUTESTONUM(time_add);
printf ("time_a is %d\\n", time_a); printf ("time_b is %d\\n", NUMTOMINUTES(time_b));
return 0; }

即使您執行630 + 110 ,這也可以正常工作; 06:30 + 01:1006:30 + 01:1006:30 + 01:10正確的結果740

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM