我通过做一些随机练习来提升我对C的认识。以下是我计算字符串中元音数量的解决方案的摘录。它有效,但必须有一个更简洁的方式来编写这个if语句。有什么想法吗?
for(int i = 0; i < length; i++) {
if(input[i] == 'a' || input[i] == 'e' || input[i] == 'i' || input[i] == 'o' || input[i] == 'u') {
total++;
}
}
答案 0 :(得分:5)
您可以使用switch
执行此操作,并提供初级案例:
for(int i = 0; i < length; i++) {
switch (input[i]) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
total++;
break;
}
}
答案 1 :(得分:2)
您可以使用库函数strtok
来标记输入字符串,如下所示:
pch = strtok (input,"aeiou");
while (pch != NULL)
{
total++;
pch = strtok (NULL, "aeiou");
}
请注意,strtok对输入字符串具有破坏性。
答案 2 :(得分:1)
strchr 可让您搜索特定字符的字符串。这似乎是解决问题的合理方法。
未经测试的代码:
char findMe = 'e';
char *vowels="aeiou";
if (strchr(vowels, findMe) != NULL)
{
print("found\n");
}
else
{
print("not found");
}
答案 3 :(得分:0)
你可以更好更快地做到这一点 make你想检查的变量数组 Ex char * array = [&#39; i&#39;,&#39; o&#39;,&#39; a&#39;&#39; e&#39;]; 那么
for(int i = 0; i < length; i++) {
for(int i2 = 0; i2 < length; i2++){
if(input[i] == array[i2]){
total++;
}
}
}
通过这种方式,您可以添加想要比较的字符数,而不是||陈述和更快。