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。是的,您也可以将除以时间的小时数除以60,然后让整数除法完成工作,但是这样更好(阅读:更清楚地了解正在发生的事情)除(totime-tominutes),因为它就像是模数线中缺少的部分

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

10-09 21:23