大家好!我有这样一个问题的代码,用于创建一个程序,计算第二个字符串出现在第一个字符串上的次数。是的,如果你只输了1个字母,那就很重要,但是如果你输了2个,那就错了。举个例子。如果第一个字符串是Harry Partear,第二个字符串是ar,则必须计为3.这是代码:
#include <iostream>
#include <conio.h>
using namespace std;
int main ()
{
char first [100], second;
int count;
cout <<"Enter 1st String: ";
cin.get (first, 100);
cout <<"Enter 2nd String: ";
cin >> second;
for (int i = 0; i < strlen (first); i++)
{
if (tolower(first[i]) == tolower(second))
{
count++;
}
}
cout << "THE STRING " << "'" << second << "'" << " appeared " << count
<< " times in " << first << ".";
getch ();
return 0;
}
希望有人能帮助我。 :(
答案 0 :(得分:1)
第一个问题是您的second
变量被声明为单个char
,而不是字符串。这应该是:
char first[100], second[100];
[100]
之前的second
适用于first
,而不是first
和second
,即使这两个声明为单个声明的一部分。 second
的类型仍为标量char
。
现在second
是一个字符数组,让我们解决第二个问题:你也需要像数组一样对待second
。特别是,您需要添加一个嵌套循环来遍历second
,以便比较看起来像
if (tolower(first[i]) == tolower(second[j]))
j
是嵌套循环的索引。
最后,您需要一个标记来指示second
的所有字符都与first
的字符匹配。在嵌套循环之前将此标志设置为true
,然后在发现不匹配时将其设置为false
。如果循环后标记保持true
,请递增count
。
答案 1 :(得分:0)
尝试改变它,就像这样:
char first [100], second[100];
int count;
cout <<"Enter 1st String: ";
cin.get (first, 100);
cout <<"Enter 2nd String: ";
cin.get (second, 100);
for (int i = 0; i < strlen (first); i++)
{
for (int j = 0; j < strlen (second); i++)
{
if (tolower(first[i]) == tolower(second[j]))
{
count++;
}
}
}
但现在的问题是,程序不会提示用户输入第二个字符串。伤心。哈哈哈。 :(