怎么t的值无法出现想要的结果,不是一个常数值

img


有人知道怎么处理吗,明明定义好了t却没有赋值,我是看b站翁恺写的这个程序

img


出现了新的问题

格式化串要写对, 就 %d h,%d m

【以下回答由 GPT 生成】

问题所在是在用户输入时间时,没有对用户输入的合法性进行校验,也没有处理用户输入错误导致的程序异常。

解决方案如下:

  1. 在用户输入时间之后,对用户输入的小时和分钟进行合法性校验,判断它们是否符合时间的范围(小时:0-23,分钟:0-59)。
  2. 如果用户输入的时间不合法,需要给出错误提示并要求重新输入。
  3. 可以使用一个循环来实现这个过程,直到用户输入了合法的时间为止。

下面是修改后的代码:

#include<stdio.h>
#include<stdlib.h> // 添加头文件以使用exit()函数

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

    printf("请输入第一个时间(hh:mm): ");
    scanf_s("%d:%d", &hour1, &minute1);

    // 对第一个时间的合法性进行校验
    while (hour1 < 0 || hour1 > 23 || minute1 < 0 || minute1 > 59) {
        printf("输入的时间不合法,请重新输入第一个时间(hh:mm): ");
        scanf_s("%d:%d", &hour1, &minute1);
    }

    printf("请输入第二个时间(hh:mm): ");
    scanf_s("%d:%d", &hour2, &minute2);

    // 对第二个时间的合法性进行校验
    while (hour2 < 0 || hour2 > 23 || minute2 < 0 || minute2 > 59) {
        printf("输入的时间不合法,请重新输入第二个时间(hh:mm): ");
        scanf_s("%d:%d", &hour2, &minute2);
    }

    int t1 = hour1 * 60 + minute1;
    int t2 = hour2 * 60 + minute2;

    int t = t2 - t1;
    printf("时间差为: %d小时 %d分钟\n", t / 60, t % 60);

    return 0;
}

通过上述修改,用户输入的时间不会出现非法情况,并且程序会持续要求用户重新输入,直到输入合法为止。这样可以避免出现无法获得期望结果的问题。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^