Asymptote_9 发表于 2019-10-3 22:45:29

算时间差的这个if程序为什么跑出来的结果始终是20小时39分钟

本帖最后由 Asymptote_9 于 2019-10-3 22:47 编辑

#include <stdio.h>
int main(void)
{
        int hour1,minute1;
        int hour2,minute2;
        printf("请输入两个时间\n");
        scanf("%d,%d\n",&hour1,&minute1);
        scanf("%d,%d\n",&hour2,&minute2);
       
        int ih = hour2-hour1;
        int im = minute2-minute1;
        if(im<0)
        {
                im = 60+im;
                ih--;
        }
        printf("时间差是%d小时,%d分钟\n",ih,im);
}

无论输入什么最后跑出来的都是20小时39分钟,为什么会这样呢?

666666q 发表于 2019-10-4 12:14:38

抱歉我搞不懂你这个是算什么的

superbe 发表于 2019-10-6 21:33:57

把两个scanf中的\n去掉,输入时hour和minute用半角逗号分隔。

lovedai 发表于 2019-10-7 16:06:48

#include <stdio.h>
int main(void)
{
        int hour1, minute1;
        int hour2, minute2;
        printf("请输入两个时间\n");
        printf("时间1: ");
        scanf_s("%d %d", &hour1, &minute1);
        printf("时间2: ");
        scanf_s("%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);
}


//改成这个试一下,我测试没有问题,scanf为什么不需要\n是因为你的输入结束需要回车,自动换行,具体可以了解一下键盘输入和系统处理之间的关系
页: [1]
查看完整版本: 算时间差的这个if程序为什么跑出来的结果始终是20小时39分钟