#include <iostream>
using namespace std;
int countLetters(char text[], char letter);
int main()
{
char letter;
cout << "Enter a letter: ";
cin >> letter;
cin.ignore();
char text[1024];
cout << "Enter text: ";
cin.getline(text, 1024);
int letterCount = countLetters(text, letter);
cout << "Number of '" << letter << "'s: " << letterCount << endl;
return 0;
}
int countLetters(char text[], char letter)
{
int letterCount = 0;
for (int i = 0; i <= text[i]; i++)
{
if (letter == text[i])
letterCount++;
}
return letterCount;
}
此代码,如编写的那样,旨在向用户询问他们想要在一行文本中搜索的字母。其次,它将要求用户输入他们想要搜索的文本行。最后,它会吐出他们输入的特定文本行中有多少个字母。
我的具体错误在于:当用户在“CS 124 - 软件开发简介”中询问“e”时,程序仅声明有一个'e'。我不确定是什么问题,因为当你运行程序并在要求搜索完全相同的文本行时输入“o”时,你会得到正确数量的'o'值返回,4。 关于我的错误是什么以及搜索'e'时为什么会出现故障的任何想法?
答案 0 :(得分:2)
您的for
条件有误,for
循环应该继续,i
小于text
的长度而不是text[i]
的值。由于这是C ++,你应该使用string
而不是字符数组,为什么要让自己更难?
下面的代码是一种C ++方法,请注意我的C ++有点生疏,代码可能包含错误。
#include <iostream>
#include <string>
using namespace std;
int countLetters(string text, char letter);
int main() {
char letter = ' ';
string text;
cout << "Enter a letter: ";
cin >> letter;
cin.ignore();
cout << "Enter text: ";
getline(cin, text); // use 'getline(cin, text)' instead of 'cin >> text'
int letterCount = countLetters(text, letter);
cout << "Number of '" << letter << "'s: " << letterCount << endl;
return 0;
}
int countLetters(string text, char letter) {
int letterCount = 0;
for (int i = 0; i < text.size(); i++) {
if (letter == text[i]) {
letterCount += 1;
}
}
return letterCount;
}
答案 1 :(得分:0)
更改条件
i <= text[i]
到
text[i] != '\0'