# C 程序：检查字符是元音还是辅音

> 原文： [https://www.programiz.com/c-programming/examples/vowel-consonant](https://www.programiz.com/c-programming/examples/vowel-consonant)

#### 在此示例中，您将学习检查用户输入的字母是元音还是辅音。

要理解此示例，您应该了解以下 [C 编程](/c-programming "C tutorial")主题：

*   [C 编程运算符](/c-programming/c-operators)
*   [C `if...else`语句](/c-programming/c-if-else-statement)
*   [C `while`和`do...while`循环](/c-programming/c-do-while-loops)

* * *

五个字母`A`，`E`，`I`，`O`和`U`称为元音。 除这 5 个元音以外的所有其他字母称为辅音。

该程序假定用户将始终输入字母字符。

* * *

## 检查元音或辅音的程序

```c
#include <stdio.h>
int main() {
    char c;
    int lowercase, uppercase;
    printf("Enter an alphabet: ");
    scanf("%c", &c);

    // evaluates to 1 if variable c is lowercase
    lowercase = (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u');

    // evaluates to 1 if variable c is uppercase
    uppercase = (c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U');

    // evaluates to 1 if c is either lowercase or uppercase
    if (lowercase || uppercase)
        printf("%c is a vowel.", c);
    else
        printf("%c is a consonant.", c);
    return 0;
} 
```

**输出**

```c
Enter an alphabet: G
G is a consonant. 
```

* * *

用户输入的字符存储在变量`c`中。

如果`c`是小写元音，则`lowercase`变量的值为 1（真），而对于其他任何字符，则其值为 0（假）。

同样，如果`c`是大写元音，则`uppercase`变量的值为 1（真），而对于其他任何字符，则其值为 0（假）。

如果`lowercase`或`uppercase`变量为 1（真），则输入的字符为元音。

但是，如果`lowercase`和`uppercase`变量均为 0，则输入的字符为辅音。

**注意**：该程序假定用户将输入字母。 如果用户输入非字母字符，则显示该字符为常数。

要解决此问题，我们可以使用[`isalpha()`](/c-programming/library-function/ctype.h/isalpha "C isalpha() Function")函数。`islapha()`函数检查字符是否为字母。

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

int main() {
    char c;
    int lowercase, uppercase;
    printf("Enter an alphabet: ");
    scanf("%c", &c);

    // evaluates to 1 if variable c is lowercase
    lowercase = (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u');

    // evaluates to 1 if variable c is uppercase
    uppercase = (c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U');

    // Show error message if c is not an alphabet
    if (!isalpha(c)) {
      printf("Error! Non-alphabetic character.");
    }
    // if c is an alphabet
    else {
      // evaluates to 1 if c is either lowercase or uppercase
      if (lowercase || uppercase)
        printf("%c is a vowel.", c);
      else
        printf("%c is a consonant.", c);
    }

    return 0;
}
```

现在，如果用户输入非字母字符，您将看到：

```c
Error! Non-alphabetic character.
```