While или Switch обнаруживают только строчные, а не прописные буквы в C - PullRequest
0 голосов
/ 03 августа 2020

Я бы хотел, чтобы пользователь написал букву для выбора, проблема в том, что он определяет только строчные буквы, а не прописные, не могли бы вы мне помочь?

#include <stdio.h>
#include <ctype.h>

int main ()
{
    char choice;
    
    printf("Will you choose A, or B?\n>");
    
    do {
        scanf(" %c", &choice);
    } while (choice != 'a' && 'A' && choice != 'b' && 'B');

    switch (choice) {
        case 'A':
        case 'a':
            printf("The First Letter of the Alphabet\n");
            break;
        case 'B':
        case 'b':
            printf("The Second Letter of the Alphabet\n");
            break;
    }

    system("pause");
    return 0;
}

1 Ответ

4 голосов
/ 03 августа 2020

В

choice != 'a' && 'A' && choice != 'b' && 'B'

'A' и 'B' просто интерпретируются как «истина» - выражение должно быть

choice != 'a' && choice != 'A' && choice != 'b' && choice != 'B'

Лучшей альтернативой может быть перемещение переключите переключатель в положение l oop, убедившись, что условие выхода l oop и переключатель согласованы.

...