【问题标题】:C++ code returning multiple duplicate characters返回多个重复字符的 C++ 代码
【发布时间】:2021-04-10 11:15:54
【问题描述】:

这是我在 C++ 中打印重复字符的代码。

#include <iostream>
#include<string.h>

using namespace std;

int main()
{
    char string[80];

    cin.getline(string,80);

    for(int i=0;i<strlen(string);i++){        
        for(int j=i+1;j<strlen(string);j++){
            if(string[i]==string[j]){
                if(string[i] != ' ')               
                    cout<<string[i]<< " ";               
                    break;
            }
        }
    }
    return 0;
}

如果输入为ravuri,则输出为r

如果输入为malayalam,则输出为:

malayalam
m
a
l
a
a

代码应该打印m a l 。为什么要多次打印同一个字符而不是一次?

【问题讨论】:

  • 因为第二/第三'a'也有重复...
  • 使用调试器并单步执行,也欢迎来到拥有std::string的c++新时代
  • @Jarod42 我应该怎么做才能只打印 1 个 a、1 个 m 和 1 个 l
  • 你必须按那个顺序打印吗?
  • @DebarthaPaul string 不是关键字,而是来自std 的一个非常常用的类,因此会让人感到困惑(尤其是在using namespace std 时,也应该避免这种情况)。跨度>

标签: c++ string duplicates


【解决方案1】:

分析您的代码,您的代码会检查任何字符后面的唯一字符。 也就是说,如果您输入malayalam 并且在for 运行时i 为1,您的代码会检查a 是否存在于layalam 中。

那么,有三个as。但是,您的代码不会全部打印这些as。 您的代码只会打印一次a

因此,

i=0 → string[0]='m' → m
i=1 → string[1]='a' → a a a
i=2 → string[2]='l' → l
i=3 → string[3]='a' → a a
i=4 → string[4]='y' →
i=5 → string[5]='a' → a
i=6 → string[6]='l' →
i=7 → string[7]='a' →
i=8 → string[8]='m' →

通过此进度,您的代码将沿着您的输入打印字符。

【讨论】:

    【解决方案2】:

    这段代码是来自博客文章“codespeedy.com”的一对一副本。

    这里是:

    How to print duplicate characters from a given string in C++

    解释部分给出了您问题的答案:

    每次检测到重复字符时打印重复值

    因此,这段代码每次检测到任何重复字符时都会打印重复值。

    这是由用户 Yash Shakya 发布的。不幸的是,我真的很遗憾地说,代码与 C++无关。质量低:

    • 不要在 C++ 程序中包含
    • 永远不要使用using namespace std;
    • 不要使用 C-Sytle 数组
    • 尽量避免使用最流行的 C++ 类型的名称string 作为变量名

    这个程序是纯C-COde,使用std::cout

    “CodeSpeedy”正在做广告

    为您的软件开发、移动应用开发和网络开发项目聘请我们。

    他们应该非常小心,他们页面上发布的内容。 . .

    【讨论】:

      猜你喜欢
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      • 2016-01-18
      • 2015-06-26
      • 2012-12-03
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      相关资源
      最近更新 更多