美味佳肴 发表于 2021-12-10 21:53:26

纯小白,请问do while的条件不能直接写a=1这种的吗

这样写,就算密码错误也不会循环,为什么呀{:5_99:}
#include"stdio.h"
int main()
{
        int password,n,f;
        password=666;

        do{
        printf("请输入正确的密码\n");
        scanf("%d",&n);
       
        if(n==password)
        {
                printf("密码正确,欢迎!\n");
                break;
        }
        else
        {       
        printf("密码错误\n");
        f=0;
       
        }

        }while(f=0);


return 0;
}




这样写却是正确的,区别是因为while的条件中只能写变量等于变量吗?
#include"stdio.h"
int main()
{
        int password,n,f,x;
        password=666;
        f=3;
        x=2;
        do{
        printf("请输入正确的密码\n");
        scanf("%d",&n);
       
        if(n==password)
        {
                printf("密码正确,欢迎!\n");
                break;
        }
        else
        {       
        printf("密码错误\n");
        x=x+1;
       
        }

        }while(f=x);


return 0;
}


人造人 发表于 2021-12-10 21:57:30

可以,从语法上看,不会有任何问题
不过这么写,在绝大多数情况下不是你期望的结果

傻眼貓咪 发表于 2021-12-10 22:00:27

帮你稍微改写:#include"stdio.h"
int main()
{
      int password,n,f = 1; // 这里 f = 1
      password=666;

      do{
      printf("请输入正确的密码\n");
      scanf("%d",&n);
      
      if(n==password)
      {
                printf("密码正确,欢迎!\n");
                f = 0; // 密码正确,f = 0,结束循环
      }
      else
      {      
      printf("密码错误\n");
      continue; // 密码不正确,继续循环
      
      }

      }while(f); // 如果 f == 1,则重复循环


return 0;
}

美味佳肴 发表于 2021-12-10 22:05:04

傻眼貓咪 发表于 2021-12-10 22:00
帮你稍微改写:

谢谢哥!!!!
页: [1]
查看完整版本: 纯小白,请问do while的条件不能直接写a=1这种的吗