xiaoyuankt
2021-09-07 01:44
采纳率: 100%
浏览 76

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

  • 好问题 提建议
  • 收藏

6条回答 默认 最新

  • qq_52045638 2021-09-07 02:34
    已采纳

    img

    img

    img


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

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 快乐鹦鹉 2021-09-07 06:13

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

    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 无用
    打赏 举报
  • baidu_30233079 2021-09-07 09:49

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

    评论
    解决 1 无用
    打赏 举报
  • qfl_sdu 2021-09-07 07:44

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

    评论
    解决 无用
    打赏 举报
  • 於黾 2021-09-07 08:16

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

    评论
    解决 无用
    打赏 举报
  • 信仰869 2021-09-07 13:02

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

    img

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

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题