本人向同窗借鉴了一个有关于时差换算的代码,以下:测试
#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;
}
这样咱们就能够避免上述状况的发生。
测试状况以下:
这样咱们就能够避免上述状况的发生,不管所输入的两个数据具有怎样的关系,均可以正确的输出所须要的答案。