【问题标题】:Returning to start of loop C返回循环 C 的开始
【发布时间】:2014-12-15 03:42:06
【问题描述】:

我想回到循环的开始,让用户输入另一个输入。

这就是我所拥有的,但我不断收到错误消息一遍又一遍地重复。

我将如何返回以便用户可以输入参数

printf("Enter a option\n");
scanf("%d", &option);

while (option != 1 || option != 2 || option != 3 || option != 4)
{
    if (option == 1)
    {
        option1(...);
        break;
    }
    else if (option == 2)
    {
        option2(...);
        break;
    }
    else if (option == 3)
    {
        option3(...);
        break;
    }
    else if (option == 4)
    {
        option4(...);
        break;
    }
    else
    {
        printf("\nPlease enter a correct option\n");
        continue;
    }
}

【问题讨论】:

  • 已经这样做了,逻辑应该是 while(scanf...!=0) { ... }
  • @remyabel 有很多文字来解释“或”的含义:|

标签: c loops return


【解决方案1】:

只需重新排列逻辑,例如:

do {
printf("Enter a option\n"); 
scanf("%d",&option);

if(option == 1){
    option1(...);
    break;
}

else if(option == 2){
    option2(...);
    break;
}                       

else if(option == 3){
    option3(...);
    break;
}

else if(option == 4){
    option4(...);
    break;
}

else{
    printf("\nPlease enter a correct option\n");
    continue;
}

}
while(true);

现在您的代码只执行一次scanf,然后迭代相同的结果,而不是每次开始循环时都必须读取该值。

【讨论】:

    【解决方案2】:
    int option;
    
    while(1)
    {
      printf("Enter a option\n");
      scanf("%d",&option);
    
      if(option == 1){
        printf("option1\n");
        break;
      }
    
      else if(option == 2){
        printf("option2\n");
        break;
      }
    
      else if(option == 3){
        printf("option3\n");
        break;
      }
    
      else if(option == 4){
        printf("option4\n");
        break;
      }
    
      else{
        printf("\nPlease enter a correct option\n");
        continue;
      }
    }
    

    【讨论】:

      【解决方案3】:

      使用 do..while 和 printf/scanf。

      do {
      
         printf("Enter a option\n"); 
         scanf("%d",&option);
      
         your if/else statements here... 
      
      } while(true);
      

      【讨论】:

        【解决方案4】:

        你应该改变你的循环来做while。

         do
                {
                     printf("Enter a option\n"); 
                    scanf("%d",&option);
        
                    if(option == 1){
                        option1(...);
                    }
        
                    else if(option == 2){
                        option2(...);
                    }                       
        
                    else if(option == 3){
                        option3(...);
                    }
        
                    else if(option == 4){
                        option4(...);
                    }
        
        
                    else{
                        printf("\nPlease enter a correct option\n");
                        continue;
                    }
        
                }while(option != 1 || option != 2 || option != 3 || option != 4);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-08-22
          • 2011-08-09
          • 2021-06-05
          • 2015-09-03
          • 1970-01-01
          • 1970-01-01
          • 2017-05-22
          相关资源
          最近更新 更多