我在下面爲一個小程序寫了下面的代碼,該程序獲取一個字符串(並將其放入一個數組中)和一個數字,然後通過數組搜索它是否有重複字符(並計算重複次數),如果是這樣;該程序將比較特定字符重複的次數和重複次數是否等於用戶給出的次數;該程序將用字符'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