以下有一段代码:
if(!isalpha(ch)) /*测试ch是否 不是 字母*/
printf("......"); /*如果不是则输出该信息*/
else
switch(tolower(ch)) /*(大写自动转小写)测试该字母是元音还是辅音*/
{
case 'a':case 'o':case 'e':case 'i':case 'u':
printf("......"); /*测试如果为元音则输出该信息*/
break;
default:
printf("......"); /*默认case(非元音)则输出该信息*/
break;
}
这里有个疑问,isalpha()函数的问题,if后如果用(isalpha(ch))会造成什么样的情况?并在该情况下怎么使整段代码的功能相同?函数前用逻辑非运算符确实给人困扰,容易混乱。这里我如果这样写:
if(isalpha(ch)) /*测试ch是否是字母*/
switch(tolower(ch)) /*(大写自动转小写)如果是则测试是否是元音*/
{
case 'a':case 'o':case 'e':case 'i':case 'u':
printf("......"); /*测试如果为元音则输出该信息*/
break;
default:
printf("......"); /*默认case(非元音)则输出该信息*/
break;
}
else
print("......");/*如果测试的不是字母则输出该信息*/
这样写有什么问题吗?问题出在哪?
if(!isalpha(ch)) /*测试ch是否 不是 字母*/
printf("......"); /*如果不是则输出该信息*/
else
switch(tolower(ch)) /*(大写自动转小写)测试该字母是元音还是辅音*/
{
case 'a':case 'o':case 'e':case 'i':case 'u':
printf("......"); /*测试如果为元音则输出该信息*/
break;
default:
printf("......"); /*默认case(非元音)则输出该信息*/
break;
}
这里有个疑问,isalpha()函数的问题,if后如果用(isalpha(ch))会造成什么样的情况?并在该情况下怎么使整段代码的功能相同?函数前用逻辑非运算符确实给人困扰,容易混乱。这里我如果这样写:
if(isalpha(ch)) /*测试ch是否是字母*/
switch(tolower(ch)) /*(大写自动转小写)如果是则测试是否是元音*/
{
case 'a':case 'o':case 'e':case 'i':case 'u':
printf("......"); /*测试如果为元音则输出该信息*/
break;
default:
printf("......"); /*默认case(非元音)则输出该信息*/
break;
}
else
print("......");/*如果测试的不是字母则输出该信息*/
这样写有什么问题吗?问题出在哪?