两种基本思路
其实就是简单的两个数相减,但是遇到的一个问题是可能不够减,需要借位的情况
1.第一种思路是大单位全部换成小单位,然后做差,最后再换算回来
2.第二种思路是就用 小时减小时分钟减分钟,但是不够减的时候考虑用if语句判断然后借位
//第一种思路
#include<stdio.h>
int main()
{
int hour1,minute1;
int hour2,minute2;
//输入两个时间
printf("请输入第一个时间\n");
scanf("%d %d",&hour1,&minute1);
printf("请输入第二个时间\n");
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;
}
//第二种思路
#include<stdio.h>
int main()
{
int hour1,minute1;
int hour2,minute2;
//输入两个时间
printf("请输入第一个时间\n");
scanf("%d %d",&hour1,&minute1);
printf("请输入第二个时间\n");
scanf("%d %d",&hour2,&minute2);
//小时减小时分钟减分钟
int hour=hour2-hour1;
int minute=minute2-minute1;
//借位
if(minute<0)
{
minute=minute+60;
hour--;
}
printf("时间差是%d小时%d分钟;",hour,minute);
return 0;
}
扩展
加入两个时间要比较,现在要求是t1是比较小的时间,t2是比较大的时间,这样子才可以在最后一步可以减,但是这就会遇到可能输入的t1是比较大的时间的情况,这时就需要移植《两个数互换》的代码,如下实现a,b两个数交换
int a,b;
int t;
t=a;
a=b;
b=t;
扩展后的程序如下(仍然以第一种思路为例)
#include<stdio.h>
int main()
{
int hour1,minute1;
int hour2,minute2;
//输入两个时间
printf("请输入第一个时间\n");
scanf("%d %d",&hour1,&minute1);
printf("请输入第二个时间\n");
scanf("%d %d",&hour2,&minute2);
//把两个时间都换算成分钟
int t1 = hour1 * 60 + minute1;
int t2 = hour2 * 60 + minute2;
//因为后面要t2 - t1 ,所以如果t1比t2大,那将两个数互换位置
if(t1>t2)
{
int a=t1;
t1=t2;
t2=a;
}
//做差,然后分别做商和取余得到结果
int t = t2 - t1;
printf("时间差是%d小时%d分钟;",t/60,t%60);
return 0;
}