我在下面为一个小程序写了下面的代码,该程序获取一个字符串(并将其放入一个数组中)和一个数字,然后通过数组搜索它是否有重复字符(并计算重复次数),如果是这样;该程序将比较特定字符重复的次数和重复次数是否等于用户给出的次数;该程序将用字符'A'代替它们。例如;如果我们给节目“BBCC”和数字2,它应该给我们结果“AAAA”。问题是我的代码适用于某些示例,不适用于上述示例。下面是代码:我C++代码中的一个棘手的错误;如何解决它?
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
char str[30];
int i, j, k, l, number, counter = 0;
char ch;
cout << "Enter a string: ";
gets (str);
cout << "\nEnter a number: ";
cin >> number;
for (i =0; str[i]; i++){
ch = str[i];
for (j = 0; str[j]; j++){
if (str[j] == ch){
counter++;
}
}
if (counter == number){
for (k = 0; str[k]; k++){
if (str[k] == ch){
str[k] = 'A';
}
}
}
}
for (l = 0; str[l]; l++){
cout << str[l];
}
getchar();
return 0;
}
另一个缺陷是,如果我们给它的字符串“ABC”和2号;结果将是“AAC”! 我知道我的代码有点凌乱,因为我是初学者,所以请道歉并帮助我解决我的问题。 谢谢。
我不知道这个问题是如何帮助未来的访问者吗? :/ – 2015-03-13 11:01:35
不要使用'gets',而应使用'std :: string'和普通的输入运算符'>>'。 – 2015-03-13 11:04:03
至于你的问题,学习如何使用调试器,在编译器和编辑器旁边,它应该是工具箱中最常用的工具。使用调试器,您可以逐行浏览代码,同时查看所有涉及的变量的值,这将帮助您了解代码是否按照您期望的方式运行。 – 2015-03-13 11:06:47