【发布时间】:2016-05-05 22:39:39
【问题描述】:
写一个函数接收一个字符串和一个要在字符串中搜索的字符。如果数组中存在搜索字符,则此函数函数返回搜索字符的索引,否则返回 -1。此外,如果数组包含多次出现的字符,则返回最左边出现的索引。例如,如果字符串是“abab”并且搜索字符是“b”,则函数返回 1;而如果字符是 'c',则函数返回 -1。 在不使用任何 C++ 库函数的情况下编写函数。
下面是我的功能。
int indexOf(const char str[], char ch)
{
int search;
for (int i = 0; i<20; i++)
{
if (ch = str[i])
search ==i;
else
search =-1;
}
return search;
}
我的问题是当我输入搜索字符或数组中不存在的字符时,我不断得到 19(20-1)。谁能告诉我如何修改我的代码以获得正确的答案?
【问题讨论】:
-
将
if (ch = str[i])更改为if (ch == str[i])和search ==i;更改为search =i;...您的编译器应该发出警告... -
您应该传递数组的容量,而不是假设(硬编码)容量为 20。
-
另外,在
if语句中,将=更改为==。这里不需要else子句。 -
您还应该在
if语句块中添加一个break语句。一旦找到字符,这将退出循环。按照要求,第一场比赛获胜。 -
顺便问一下,当一切都像 C 一样,你为什么要标记 C++ 这个问题?