首页 > 解决方案 > (C 编程)while true 循环与 switch case,总是在默认情况下运行

问题描述

我是 C 编程的新手。我正在练习通过无限循环读取用户输入,并检查输入是元音还是常量。我使用开关来检查它,但是当我执行我的代码时,总是执行默认情况,我被卡住了。

如果有人能给我一些建议,将不胜感激,谢谢!

#include <stdio.h>

void checkIfVowel(char *c);

int main()
{
    char c;
    while (1)
    {
        printf("Please enter a character: ");
        scanf("%c", &c);
        checkIfVowel(&c);
    }
    return 0;
}

void checkIfVowel(char *c)
{
    switch (*c)
    {

    case 'A':
        printf("%c is a vowel! \n", *c);
        break;
    case 'E':
        printf("%c is a vowel! \n", *c);
        break;
    case 'I':
        printf("%c is a vowel! \n", *c);
        break;
    case 'O':
        printf("%c is a vowel! \n", *c);
        break;
    case 'U':
        printf("%c is a vowel! \n", *c);
        break;
    case 'a':
        printf("%c is a vowel! \n", *c);
        break;
    case 'e':
        printf("%c is a vowel! \n", *c);
        break;
    case 'i':
        printf("%c is a vowel! \n", *c);
        break;
    case 'o':
        printf("%c is a vowel! \n", *c);
        break;
    case 'u':
        printf("%c is a vowel! \n", *c);
        break;
    default:
        printf("%c is a constant! \n", *c);
        break;
    }
}

标签: cwhile-loopswitch-statement

解决方案


简单的改变就足以消除错误。但是,即使使用 if-else 语句对 1 行代码中的所有元音进行逻辑条件,您也可以简单地做到这一点,而不是使用这种 switch case。!去尝试一下!我只附加错误删除的代码

#include <stdio.h>

void checkIfVowel(char *c);

int main()
{
    char c;
    while (1)
    {
        printf("Please enter a character: ");
        scanf("%c", &c);
        checkIfVowel(c);
    }
    return 0;
}

void checkIfVowel(char* c)
{
    switch ((char) c)
    {

    case 'A':
        printf("%c is a vowel! \n", c);
        break;
    }
    
}

 

推荐阅读