C编程,Switch Case问题

时间:2013-09-18 23:07:30

标签: c switch-statement

#include <stdio.h>
int main(void)
{
char ch;
//character = ch        
    printf("Please type a character [A-Z or a-z] ('x'to exit):");
    scanf("%c", &ch);   
        switch(ch) //switch statement
        {
        case 'a':
            printf("%c is a vowel.\n", ch);
                break; 
        case 'e':
            printf("%c is a vowel.\n", ch);
                break; 
        case 'i':
            printf("%c is a vowel.\n", ch);
                break; 
        case 'o':
            printf("%c is a vowel.\n", ch);
                break; 
        case 'u':
            printf("%c is a vowel.\n", ch);
                break; 
        case 'A':
            printf("%c is a vowel.\n", ch);
                break; 
        case 'E':
            printf("%c is a vowel.\n", ch);
                break; 
        case 'I':
            printf("%c is a vowel.\n", ch);
                break; 
        case 'O':
            printf("%c is a vowel.\n", ch);
                break; 
        case 'U': 
            printf("%c is a vowel.\n", ch);
                break; 
        default:
            if(ch != 'x'){
                printf("%c is a consonant.\n", ch); 
                    break; }
            else if(ch == 'x'){
                printf("%c is a consonant.\n", ch);
                    break; }
        }   

我在使用此代码方面遇到了很多麻烦。我有它完美,但它需要不断重复,直到输入'x'。尝试了一个循环,没有任何运气,只是最近尝试了默认情况下的if语句,这也不起作用。如果有人能给我一点见解,我会非常接近!

2 个答案:

答案 0 :(得分:7)

  1. 你不需要这么重复自己。您可以为给定的案例使用多个标签:

    case 'a':
    case 'e':
    case 'i':
    case 'o':
    case 'u':
    case 'A':
    case 'E':
    case 'I':
    case 'O':
    case 'U':
        printf("%c is a vowel.\n", ch);
        break;
    default:
        printf("%c is a consonant.\n", ch);
        break;
    
  2. 你需要一个循环:

    do
    {
        printf(...)
        scanf(...)
        switch (...)
        {
           ...
        }
    } while (ch != 'x');
    
  3. 在执行isalpha之前,您可能希望在其中添加switch来电。

答案 1 :(得分:0)

while(ch != 'x'){
  ...

  ...
}

或者你可以做一个功能菜单方法

void runMenu(){
     // do stuff
     runMenu();
}

我会看看@Carl Norum的代码优化答案!