Как правильно зациклить вложенный оператор switch, чтобы показать вывод? - PullRequest
0 голосов
/ 13 апреля 2019

Нужен код, который будет повторять подсказку Enter value(1,2,e): каждый раз.

  • После ввода 1 он должен выполнить действие case 1 и повторить запрос.
  • После ввода 2 он должен выполнить действие case 2 и повторить запрос.
  • После ввода, отличного от 1,2,e, он должен напечатать "try again" и повторить запрос.
  • После ввода e должно быть напечатано "exit program" и конец.

Ошибка:

Если я введу символ, цикл будет бесконечным ... как мне это исправить?

Я пробовал switch statement в цикле while, как показано ниже.

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 голосов
/ 13 апреля 2019

Для простоты мы можем просто прочитать value как символ вместо целого числа, чтобы мы могли вводить что угодно, т. Е. Число или символы, если и только если вы хотите иметь опции "от 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();
}
0 голосов
/ 13 апреля 2019

Если вы хотите проверить наличие букв, вы должны разрешить пользователю вводить буквы:

#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;
}

Примечание

Эта программа не проверяет ошибки.Этот код не должен использоваться в производственной среде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...