【问题标题】:(Newbie) Ending a program, even or odd program(新手)结束一个程序,偶数或奇数程序
【发布时间】:2021-03-14 18:48:30
【问题描述】:

我正在编写一个程序来查找一个数字是偶数还是奇数。它会一直要求输入一个数字,直到用户输入零。

#include <stdio.h>

int main () {
    int number = 1;

    do{
        printf("Number? ");
        scanf("%d", &number)
    
        if(number % 2 != 0){
            printf("Odd\n");
        }
        else{
            printf("Even\n");
        }
    }while(number != 0);

    return 0;
}

但是,当我键入零而不输出“偶数”时,我不知道如何结束程序。非常感谢您的帮助,因为我被困在这个问题上并且不太确定如何前进。

【问题讨论】:

  • 打印前为什么不检查一下这个数字不是0?
  • 必须检查 scanf 返回的值。总是。考虑将“foo”作为输入时您的程序的行为。

标签: c loops while-loop scanf do-while


【解决方案1】:

您可以将else更改为else if,并在打印Even之前检查该数字不是0

只需将条件语句 if(number != 0) 添加到您的 else 块中:

#include <stdio.h>

int main () {
    int number = 1;

    do{
        printf("Number? ");
        scanf("%d", &number)
    
        if(number % 2 != 0){
            printf("Odd\n");
        }
        else if(number != 0){
            printf("Even\n");
        }
    }while(number != 0);

    return 0;
}

【讨论】:

    【解决方案2】:
    #include <stdio.h>
    
    int main () {
        int number = 1;
    
        do{
            printf("Number? ");
            scanf("%d", &number)
    
            if (number == 0)
            {
                printf("You Entered 0 to quit\n");
                break;   // Exit out of the Do-While Loop immediately
            }
        
            if(number % 2 != 0){
                printf("Odd\n");
            }
            else{
                printf("Even\n");
            }
        }while(number != 0);
    
        return 0;
    }
    

    【讨论】:

    • 我被鼓励不要使用我假设的“中断”,因为它是一个更快的解决方案。一个有效的解决方案,谢谢。
    【解决方案3】:

    您可以简单地在返回时使用exit() 函数或直接在return 0 上使用。

    #include <stdio.h>
    
    int main () {
        int number = 1;
    
        do{
            printf("Number? ");
            scanf("%d", &number)
            if (number == 0)
              return 0;
        
            if(number % 2 != 0){
                printf("Odd\n");
            }
            else{
                printf("Even\n");
            }
        }while(number != 0);
    
        return 0;
    }
    

    【讨论】:

      【解决方案4】:

      在这种情况下,最好使用无限循环。

      例如

      #include <stdio.h>
      
      int main(void) 
      {
          while ( 1 )
          {
              printf( "Enter a number (0 - exit): " );
              
              int number;
              
              if ( scanf( "%d", &number ) != 1 || number == 0 ) break;
              
              printf( "The number %d is %s.\n", number, number % 2 == 0 ? "even" : "odd" );
          }
          
          return 0;
      }
      

      程序输出可能看起来像

      Enter a number (0 - exit): 10
      The number 10 is even.
      Enter a number (0 - exit): 11
      The number 11 is odd.
      Enter a number (0 - exit): 0
      

      您还可以在程序中包含标题&lt;stdbool.h&gt;

      #include <stdbool.h>
      

      并像这样重写while语句

          while ( true )
          {
              // ...
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多