For 循环一旦进入 else 内部就不再运行

问题描述 投票:0回答:1

我试图在用户输入“0”时输出 First_Name,在输入“1”时输出 Last_Name,我首先使用其他方式执行此操作,并随机更改代码。

#include <stdio.h>

int main() {
    int a;
    
    for (a = 0; a < 1 ; a--) {
        printf("ENTER 0 or 1\n");
        scanf("%d", &a);
      
        if (a == 0) {  
            printf("First_Name");  
        } 
        else {  
            if (a == 1) {  
                printf("Last_Name\n");  
            } 
            else {  
                printf("Wrong Input. Please Try Again.\n");
            }
        }
    }

    return 0;
}

如果我输入“0”或“1”,代码将按预期工作(它根据需要显示 First_Name 或 Last_Name),然后提示等待用户再次输入。

但是一旦我输入任何其他数字,它只会打印“输入错误。请重试。”然后退出。

为什么? (我正在在线编译器上运行代码。)

c for-loop if-statement
1个回答
0
投票

尝试一下,for 循环是在没有初始化、条件或增量表达式的情况下编写的(for (;;))。这将创建一个无限循环,该循环将继续运行,直到从循环体内部明确终止。

#include <stdio.h>

int main() {
    int a;
    
    for (;;) {
        printf("ENTER 0 or 1\n");
        scanf("%d", &a);
      
        if (a == 0) {  
            printf("First_Name\n");  
        } 
        else if (a == 1) {  
            printf("Last_Name\n");  
        } 
        else {  
            printf("Wrong Input. Please Try Again.\n");
            continue; // Skip the rest of the loop body and start from the beginning
        }
    }

    return 0;
}

你也可以试试这个。

#include <stdio.h>

int main() {
    int a;
    
    while (1) {
        printf("ENTER 0 or 1\n");
        scanf("%d", &a);
      
        if (a == 0) {  
            printf("First_Name\n");  
        } 
        else if (a == 1) {  
            printf("Last_Name\n");  
        } 
        else {  
            printf("Wrong Input. Please Try Again.\n");
            continue; 
        }
    }

    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.