易百教程

判断字母是辅音还是元音

可以通过使用isalpha()函数来简化switch语句。
如果作为参数传递的字符是字母字符,则该函数返回非零整数,如果字符不是字母,则返回0(即false)。

因此,可以使用以下代码生成与上一个switch语句相同的结果:

#include <stdio.h>
#include <ctype.h>
int main()
{

  char ch = 'a';
  if (!isalpha(ch)){
    printf("这个字符不是字母.\n");
  }else
  {
    switch (tolower(ch))
    {
    case 'a': case 'e': case 'i': case 'o': case 'u':
      printf("这个字符是一个元音.\n");
      break;
    default:
      printf("这个字符是一个辅音.\n");
      break;
    }
  }
  return 0;
}

执行上面示例代码,得到以下结果:

hema@ubuntu:~/book$ gcc main.c
hema@ubuntu:~/book$ ./a.out
这个字符是一个元音.

if语句测试ch是否为字母,如果是,则输出一条消息。如果ch是一个字母,switch语句将判断它是元音还是辅音。
五个元音值产生一个输出,默认情况(未找到匹配时)产生另一个输出。
ctype.h头文件还声明了一些用于测试字符的其他函数。它们分别如下所示:

函数 作用
islower() 判断是否为小写字母
isupper() 判断是否为大写字母
isalnum() 判断是否为大写或小写字母或十进制数字
iscntrl() 判断是否为控制字符
isprint() 判断是否为可打印字符(含空格)
isgraph() 判断是否为除空格外的任何打印字符
isdigit() 判断是否为十进制数字(09)
isxdigit() 判断是否为十六进制数字(09AFaf)
isblank() 判断是否为标准空白字符(空格,\t)
isspace() 判断是否为空白字符(空格,\n\t\v\r\f)
ispunct() 判断是否为打印字符,其中isspace()isalnum()返回false
isalpha() 判断是否为大写或小写字母
tolower() 转换为小写
toupper() 转换为大写