jdndm 发表于 2026-9-9 11:36:05

大佬们能不能帮我看看为社么这个if语句不运行啊

#include<stdio.h>
int main()
{        int a;
        printf("请输入六位密码");
        do{
                scanf("%d",&a);
                if(a!=123456){
                        printf("密码错误\n");
                }
        }
        while(a!=123456);
        printf("密码正确\n");
        return 0;
}
我问了deep seek但他说没错a

FishC 发表于 2026-9-9 11:36:24

先别急,这段代码的if本身是会运行的,逻辑没有大问题。

流程是这样的:


[*]输入一个数给a;
[*]如果a != 123456,就执行if里面的printf("密码错误\n");
[*]当a == 123456时,if条件不成立,所以它不会执行;
[*]循环结束,输出“密码正确”。


如果你输入的是正确密码123456,if里面当然不会运行,这是正常的,并不是代码出错了。

真正可能出问题的情况是:你输入的不是数字,比如abc,那么scanf会读取失败,a没有被正确赋值,程序就会陷入不断输出“密码错误”的死循环。

简单改进一下,建议检查scanf的返回值:


#include <stdio.h>

int main()
{
    int a;
    int result;

    printf("请输入六位密码:");

    do {
      result = scanf("%d", &a);

      // 如果输入的不是数字,清空缓冲区并重新输入
      if (result != 1) {
            while (getchar() != '\n');
            printf("输入无效,请重新输入:\n");
            continue;
      }

      if (a != 123456) {
            printf("密码错误\n");
      }
    } while (a != 123456);

    printf("密码正确\n");

    return 0;
}


这样就算输入abc这样的内容,程序也会处理,不会一直卡住。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 大佬们能不能帮我看看为社么这个if语句不运行啊