1. 程式人生 > >字串轉數字運算——計算火車執行時間

字串轉數字運算——計算火車執行時間

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]);
}