简单C语言之有趣的时间差问题

在这里插入图片描述这是一道看似很简单的有关C语言的时间差问题,其实需要考虑的东西还蛮多的!!!
举个栗子,思考一下
如果单纯地小时与小时相减,分钟与分钟相减;
2点20-1点10分=1小时10分钟
3点10分-2点50分=1小时负40分钟(这就不是我们想要的正确答案了)
解决方案:
我们可以将两个时间(几时几分)换算成分钟,然后再将分钟换算成几小时几分钟。代码如下:

#include<stdio.h>
#include<math.h>
int main(){
	int hour1,minute1;
	int hour2,minute2;
	int final_hour,final_minute;
	
	printf("请输入第一个时间:");
	scanf("%d %d",&hour1,&minute1);
	printf("请输入第二个时间:");
	scanf("%d %d",&hour2,&minute2);
	
	final_hour=abs((hour2*60+minute2)-(hour1*60+minute1))/60;//小时部分 
	final_minute=abs((hour2*60+minute2)-(hour1*60+minute1))%60;//分钟部分 
	
	if(final_hour==0){
		printf("%d点%d分与%d点%d分的时间差为%d分钟:",hour1,minute1,hour2,minute2,final_minute);
	}else{
		printf("%d点%d分与%d点%d分的时间差为%d小时%d分钟:",hour1,minute1,hour2,minute2,final_hour,final_minute);
	}
	
	return 0; 
} 

最后的判断语句

if(final_hour==0){
		printf("%d点%d分与%d点%d分的时间差为%d分钟:",hour1,minute1,hour2,minute2,final_minute);
	}else{
		printf("%d点%d分与%d点%d分的时间差为%d小时%d分钟:",hour1,minute1,hour2,minute2,final_hour,final_minute);
	}

这部分是为了避免出现0小时几分钟这种情况。
最后
分享我从别人那里学到的小干货,C语言中的取绝对值函数:

  1. int型使用abs();
  2. long型使用labs();
  3. float,double型使用fabs();
发布了4 篇原创文章 · 获赞 2 · 访问量 121

猜你喜欢

转载自blog.csdn.net/weixin_45145550/article/details/103252111