gpt4 book ai didi

c - 无需 if else 语句即可获取时差

转载 作者:行者123 更新时间:2023-11-30 20:58:34 25 4
gpt4 key购买 nike

C Time Difference

scanf ("%2d %2d", &shours, &sminutes); 
printf ("Enter End Time : ");
scanf ("%2d %2d", &ehours, &eminutes);
printf ("\nTIME DIFFERENCE\n");
tohours = ehours - shours;
printf("Hour(s) : %2d", tohours);
tominute = eminutes - sminutes;
printf("\nMinute(s): %2d ", tominute);

我怎样才能让我的输出像这样?当我尝试运行我的代码时,分钟输出是 -59 而不是 1,而我的小时是输出“1”的时间

附注不使用 if else 语句

最佳答案

使用(某种)时间戳,将小时和分钟变量转换为一个,例如:

stime = shours * 60 + sminutes;
etime = ehours * 60 + eminutes;

然后计算其差异

totime = etime - stime;

然后将其转换回小时和分钟

tominutes = totime % 60;
tohours = (totime - tominutes) / 60;

(整数除法将进行向下舍入)

不是最复杂的解决方案,但我猜您正在寻找适合初学者的解决方案

编辑

对于初学者来说:% 是返回除法余数的模运算符。因此,当您将 119 除以 60 时,它会返回 59。是的,您也可以通过将 totime 除以 60 来获取小时数,然后让整数除法完成这项工作,但这样更好(阅读:更清楚读一下发生了什么)当你除(totime - tominutes)时,因为它就像模数线上缺失的部分

关于c - 无需 if else 语句即可获取时差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51613967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com