c语言代码编写逻辑错误 找不到在线求解

#include <stdio.h>

int main()
{
int hour1, minute1;
int hour2, minute2;

scanf("%d %d", &hour1, &minute1);
scanf("%d %d", &hour2, &minute2);

int ih = hour2 - hour1;
int im = minute2 - minute1;

if ( im <0 ) {
    im = 60 + im ;
    ih --;
}

printf("两次时间相差%d小时,%d分钟.\n", ih, im);

return 0 ; 

}

img

img

img

img


我自己打代码试验了一下,代码是可行的,我想你大概率是使用了中文标点的问题

不要时间和分钟都进行判断,将小时转换成分钟,然后比较,最后再转换成小时和分钟

scanf("%d %d", &hour1, &minute1);
scanf("%d %d", &hour2, &minute2);
int t1 = hour1*60 + minute1;
int t2 = hour2*60+minute2;
int t = t2 - t1;
int ih = t%60;
int im = t/60;
printf("两次时间相差%d小时,%d分钟.\n", ih, im);
return 0 ; 
}

你这不能直接把小时和分钟分开减。
1、把小时转成分钟和分钟加在一起,也就是只有分钟表示时间。HourX60 + Minutes 如2小时 15分,转换后是135分钟
2、把两个用分钟表示的时间相减,再取绝对值就是两个时间相差的分钟数。
3、再相差的分钟数转成小时和分钟 Hour = 分钟数/60 Minutes= 分钟数%60

先判断hour1和hour2的大小,如果hour1大于hour2,就用hour1减hour2, minute1减minute2。反之亦然

我怀疑你的代码和测试截图不一致,或者源代码与可执行文件不一致。把工程全部重新编译一下试试。

代码没问题,我也编译过了

img

你可以把错误的情况加一些日志,printf(""),尽量知道每一个值事多少,来排查错误
scanf两个%d%d之间不用加空格,很可能就是scanf的原因