使用数据类型Char计算字符串中的字符串

时间:2014-12-20 10:15:39

标签: string count char

大家好!我有这样一个问题的代码,用于创建一个程序,计算第二个字符串出现在第一个字符串上的次数。是的,如果你只输了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;
}

希望有人能帮助我。 :(

2 个答案:

答案 0 :(得分:1)

第一个问题是您的second变量被声明为单个char,而不是字符串。这应该是:

char first[100], second[100];

[100]之前的second适用于first,而不是firstsecond,即使这两个声明为单个声明的一部分。 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++;
                          }
                          }
                          }

但现在的问题是,程序不会提示用户输入第二个字符串。伤心。哈哈哈。 :(