我遇到了一个我被指示写的程序有困难。程序应该在单词中搜索出现的第一个元音,然后打印出该元音的索引。如果没有元音,则应返回-1。
到目前为止,这是我的代码:
int firstVowel(char* string){
//Variable for case with no vowels
int notInString = -1;
int length = strlen(string);
int i;
for(i = 0; i <= length; i+=1){
if(*string == 'a' || *string == 'e' || *string == 'i' ||
*string == 'o' || *string == 'u'){
return i;
}
else if(*string != 'a' || *string != 'e' || *string != 'i' || *string != 'o' ||
*string != 'u') {
return notInString;
}
}
}
当我使用输入“abced”运行它时,它会正确返回0。但是,当我将其作为fsed运行时,它会错误地返回-1。
答案 0 :(得分:0)
你循环不会增加string
并且在完成第一次比较后总是返回,你想要
int firstVowel(char* string) {
//Variable for case with no vowels
int notInString = -1;
int length = strlen(string);
int i;
for (i = 0; i <= length; i += 1) {
if (*string == 'a' || *string == 'e' || *string == 'i' ||
*string == 'o' || *string == 'u') {
return i;
} else {
string++;
}
}
return notInString;
}
这将搜索整个数组,返回它看到的第一个元音的索引。在处理完整个字符串之前,它不能返回notInString
。