C语言基础问题求解答,运算符

if((b[i]=='a')||(b[i]=='e')||(b[i]=='i')||(b[i]=='o')||(b[i]=='u'))
可以写成下面的形式吗?
if(b[i]==('a'||'e'||'i'||'0'||'u'))

不可以的,会先判断括号里面的。你用switch语句

不可以,C不支持这种格式,只能一个个比较

确实是不行,C语法不支持这种格式。
如果 if 语句太多,可以考虑使用 switch case 语句来代替。

不可以的,你下面那种形式是先判断括号里的,而括号里面的值恒等于1,所以你下面的那行代码可以写为:if(b[i]==1)。
所以,当要比较多个数值时,应该一个一个的,不要嫌麻烦,C语言本身是面向过程的,代码量会比其他编程语言稍微多一点点的也难免。

可以这么写
if (strstr("aeiou", b[i]) != null)
...

参考
http://blog.sina.com.cn/s/blog_5f67441501015pyz.html

思路就是判断"aeiou"这个字符串是否包含b[i],如果包含,就相当于说b[i]等于这些值之一。

字符在内存中本身就是按ASCII码存储的,这样逻辑判断语句'a'||'e'||'i'||'o'||'u'就变成了97||101||105||111||117=1