问题及代码:
/*
*Copyright (c)2014,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:time.cpp
*作 者:单昕昕
*完成日期:2014年12月9日
*版 本 号:v1.0
*
*问题描述:从键盘输入两个时间点(24小时制),输出两个时间点之间的时间间隔,时间间隔用“小时:分钟:秒”表示。 如:3点5分25秒应表示为--03:05:25.假设两个时间在同一天内,时间先后顺序与输入无关。
*程序输出:以“小时:分钟:秒”的格式输出时间间隔。
*/
#include<iostream>
#include<cstdio>
#include <iomanip>
#include<cmath>
using namespace std;
int main()
{
int str1[3],str2[3];
int i,j,k,m,n,d;
char a,b;
cin>>str1[0]>>a>>str1[1]>>b>>str1[2];
cin>>str2[0]>>a>>str2[1]>>b>>str2[2];
m=str1[0]*60*60+str1[1]*60+str1[2];
n=str2[0]*60*60+str2[1]*60+str2[2];
d=n-m;
d=fabs(d);
i=d/3600;
j=(d-i*3600)/60;
k=d-i*3600-j*60;
printf("%02u:%02u:%02u",i,j,k);
return 0;
}
再补一段最后输出控制的C++版本:
#include<iostream>
#include<cstdio>
#include <iomanip>
#include<cmath>
using namespace std;
int main()
{
int str1[3],str2[3];
int i,j,k,m,n,d;
char a,b;
cin>>str1[0]>>a>>str1[1]>>b>>str1[2];
cin>>str2[0]>>a>>str2[1]>>b>>str2[2];
m=str1[0]*60*60+str1[1]*60+str1[2];
n=str2[0]*60*60+str2[1]*60+str2[2];
d=n-m;
d=fabs(d);
i=d/3600;
j=(d-i*3600)/60;
k=d-i*3600-j*60;
if(i<10)
cout<<"0"<<i<<":";
else
cout<<i<<":";
if(j<10)
cout<<"0"<<j<<":";
else
cout<<j<<":";
if(k<10)
cout<<"0"<<k;
else
cout<<k;
return 0;
}
运行结果:
先求时间差的绝对值,再按格式输出。
学习心得:
一开始木有用绝对值函数,系统自动把前面的0变成-1。