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

时间:2019-04-13 16:53:13

标签: c

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

  • 输入1后,它应该执行case 1操作并重复提示。
  • 输入2后,它应该执行case 2操作并重复提示。
  • 输入1,2,e以外的其他字符后,它应打印"try again"并重复提示。
  • 输入e后,它应打印"exit program"并结束。

错误:

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

我在while循环中尝试了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*

2 个答案:

答案 0 :(得分:0)

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

#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 program\n");
    return 0;
}

注意

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

答案 1 :(得分:0)

为简单起见,我们可以将value读为char而不是整数,这样,当且仅当您希望使用选项“ 0到9”时,我们才能输入数字或字符。 在switch case中(在修改为使用chars的程序下面),如果case大于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();
}