如何正确循环嵌套开关语句以提供显示的输出



需要每次都会重复提示Enter value(1,2,e):的代码。

  • 输入1后,它应该做case 1动作并重复提示。
  • 输入2后,它应该做case 2动作并重复提示。
  • 输入1,2,e以外的内容后,应打印"try again"并重复提示。
  • 输入e后,它应该打印"exit program"并结束。

错误:

如果我输入一个字符,循环是无限的......我该如何解决这个问题?

我已经尝试了一段时间循环switch statement,如下所示。

int main() {
    int value;
    printf("%s", "Enter value(1,2,e):");
    scanf_s("%d", &value);
    while (value != 'e') {
        switch (value) {
        case 1:
            printf("You have picked correctly!");
            break;
        case 2:
            printf("You have picked incorrectly!");
            break;
        default:
            printf("try again.");
        }
        printf("%s", "nEnter value(1,2,e):");
        scanf_s("%d", &value);
    } printf("Exit program");
    getchar();
    getchar();
}

我希望我的输出是:

Enter value(1,2,e):1 You have picked correctly!
Enter value(1,2,e):2 You have picked incorrectly!
Enter value(1,2,e):3 Try again!
Enter value(1,2,e):e Bye!
*exits program*
如果要

检查字母,则必须允许用户输入字母:

#include <stdio.h>
#include <stdlib.h>
int main(void) {
    char buffer[81];
    int value;
    while (1) {
        printf("%s", "Enter value(1,2,e):");
        scanf("%s", buffer);
        if ('e' == buffer[0]) {
            break;
        }
        value = atoi(buffer);
        switch (value) {
            case 1:
                printf("You have picked correctly!n");
                break;
            case 2:
                printf("You have picked incorrectly!n");
                break;
            default:
                printf("try again.n");
        }
    }
    printf("Exit programn");
    return 0;
}

注意

该程序不执行错误检查。不应在生产环境中使用此代码。

简单地说,我们可以将value读取为 char 而不是整数,这样我们就可以输入任何东西,即数字或字符,当且仅当您想要选项"0 到 9"在开关情况下(下面的程序修改为使用字符(,如果情况大于 0..9,则程序由 @David Cullen 给出。

int main() {
char value;
printf("%s", "Enter value(1,2,e):");
scanf_s("%c", &value);
while (value != 'e') {
switch (value) {
case '1':
    printf("You have picked correctly!");
    break;
case '2':
    printf("You have picked incorrectly!");
    break;
default:
    printf("try again.");
}
printf("%s", "nEnter value(1,2,e):");
scanf_s("%c", &value);
} 
 printf("Exit program");
 getchar();
 getchar();
}