字串轉數字運算——計算火車執行時間
阿新 • • 發佈:2018-12-10
PTA-7-22 計算火車執行時間 (15 分)
本題要求根據火車的出發時間和達到時間,編寫程式計算整個旅途所用的時間。
輸入格式:
輸入在一行中給出2個4位正整數,其間以空格分隔,分別表示火車的出發時間和到達時間。每個時間的格式為2位小時數(00-23)和2位分鐘數(00-59),假設出發和到達在同一天內。
輸出格式:
在一行輸出該旅途所用的時間,格式為“hh:mm”,其中hh為2位小時數、mm為2位分鐘數。
輸入樣例:
1201 1530
輸出樣例:
03:29
思路:挺坑的 ,一開始每個時間存成四個字元,導致大量判斷不方便輸出。後來存成兩個int 變數。輸入的scanf一開始也寫錯了。剛上傳沒加註釋,之後補上。
#include<stdio.h> #include<string.h> #include<math.h> double work(double a) { if(a<50||a==50)return 0.53*a; else return 0.53*50+0.58*(a-50); } int main() { int i; int c[2]; char a[4],b[4]; int a1[2],b1[2]; scanf("%s %s",a,b); //printf("%s %s\n",a,b); for(i=0;i<3;i++) { b[i]=b[i]-'0'; a[i]=a[i]-'0'; } a1[0]=((int)a[0])*10+(int)a[1]; a1[1]=((int)a[2])*10+(int)a[3]-48; b1[0]=(int)b[0]*10+(int)b[1]; b1[1]=(int)b[2]*10+(int)b[3]-48; //printf("%d %d %d %d\n",a1[0],a1[1],b1[0],b1[1]); if(a1[1]>b1[1]) { c[1]=60-(a1[1]-b1[1]); c[0]=b1[0]-a1[0]-1; } else { c[1]=b1[1]-a1[1];//printf("%d ",c[1]); c[0]=b1[0]-a1[0]; } if(c[1]>-1&&c[1]<10) { if(c[0]>-1&&c[0]<10) printf("0%d:0%d",c[0],c[1]); else printf("%d:0%d",c[0],c[1]); } else if(c[0]>-1&&c[0]<10) printf("0%d:%d",c[0],c[1]); else printf("%d:%d",c[0],c[1]); }