本人向同窗借鑑了一個有關於時差換算的代碼,以下:測試
#include <stdio.h>
int main()
{
int hour1,minute1;
int hour2,minute2;
printf("請輸入你想要進行換算的兩個時間:\n");
scanf("%d %d",&hour1,&minute1);
scanf("%d %d",&hour2,&minute2);
int t1=hour1*60+minute1;
int t2=hour2*60+minute2;
int t=t2-t1;
printf("你所輸入的兩地的時差是%d小時%d分鐘",t/60,t%60);
return 0;
} 優化
該段代碼能夠進行兩個時間的時差換算,運行結果以下:code
但如經過多組數據的試驗,發現有一個小bug,當輸入的第一個數據時間晚於第二個數據的時候,就會出現輸出時差爲負數的狀況發生,如圖:blog
由於在咱們的平常生活中,時間差只是兩個時間的差值,因此是一個標量而並非向量,因此不該該有負數的發生。io
這種狀況是咱們不想遇到的,因此咱們應該加入一個判斷語句,對所輸入的數據進行判斷,以此來避免該狀況的發生。class
因此我加入了兩端判斷語句,如圖:bug
if(hour2>hour1){
ih=hour2-hour1;
im=minute2-minute1;
if(im<-0){
im=60+im;
ih --;
}
}im
if(hour2<hour1){
ih=hour2-hour1;
im=minute1-minute2;
if(ih<-0){
ih ++;
im=60+im;
}
}d3
這兩段代碼,對所輸入的時間的數字進行了比較,以保證讓所輸出的時間差爲正數。數據
因此優化後的代碼以下圖:
#include <stdio.h>
int main()
{
int hour1,minute1;
int hour2,minute2;
int im,ih;
printf("請輸入你想要進行換算的兩個時間:\n");
scanf("%d %d",&hour1,&minute1);
scanf("%d %d",&hour2,&minute2);
if(hour2>hour1){
ih=hour2-hour1;
im=minute2-minute1;
if(im<-0){
im=60+im;
ih --;
}
}
if(hour2<hour1){
ih=hour2-hour1;
im=minute1-minute2;
if(ih<-0){
ih ++;
im=60+im;
}
}
printf("您說輸入的時差爲%d時%d分。\n",ih,im);
return 0;
}
這樣咱們就能夠避免上述狀況的發生。
測試狀況以下:
這樣咱們就能夠避免上述狀況的發生,不管所輸入的兩個數據具有怎樣的關係,均可以正確的輸出所須要的答案。