替换char数组中的字符c ++

时间:2017-02-20 00:16:52

标签: c++ arrays string char

我有一个填充了1和0的字符数组。如果在1之后有0,那么他们需要切换位置。循环重复k次。我写了这段代码,但是当我尝试打印字符串时,它不会打印出任何内容,或者只是打印出来1.为什么它会这样做以及它为什么不起作用?

#include <iostream>
using namespace std;
int const limit = 100000;

int main() {
    int k;
    char s[limit];

    cin >> k;
    cin >> s;

    for (int i = 0; i < k; i++) {
        for (int j = 0; j < strlen(s); j++)
            if (s[j + 1] == '0' && s[j] == '1') {
                s[j + 1] = '1';
                s[j] = 0;
                }
            }
    }

    cout << s;

    return 0;
}

3 个答案:

答案 0 :(得分:1)

a)有一个错误的大括号。

b)您需要将s[j] = '0'更改为#include <cstring> #include <iostream> using namespace std; int const limit = 100000; int main() { int k; char s[limit]; cin >> k; cin >> s; for (int i = 0; i < k; i++) { for (int j = 0; j < strlen(s); j++) { if (s[j + 1] == '0' && s[j] == '1') { s[j + 1] = '1'; s[j] = '0'; } } } cout << s; return 0; }

c)虽然不是错误,但为了澄清,我会在第二个for循环周围添加花括号。这使代码更容易阅读。

<a href="url" onclick="$('#menuID').css('display', 'none');">Click me!</a>

答案 1 :(得分:0)

我首先要理解上面的陈述:int const limit = 100000;意味着(正如您所知)您已经分配了您的命名变量&#34; limit&#34;,一个100000的常数整数值。值100000是单个数值整数;不是&#39; 0&1&#39; 1的ASCII字符数组(如果我正确地思考你的想法)。数值100000在存储中分配一个位置,不能在代码中更改;除非你自己将代码更改为另一个值(即int const limit = 15;)。 (没有意义)。

//我的想法是你试图做这样的事情吗?

#include <iostream>
#include <string>

int(main) {
int k = 10;

char s[] = "0 1 0 1 0 1 1 0 1 1":  // let the compiler count

// create a nested for loop to change the '0' char to a '1' char here as you
// want to do above.
.... code ....

return 0;
}

你说你有一个字符数组,s [limit],填充了1和0&#39; s。然后它们需要是ASCII系统名称。 &#39; 0&#39; 0和&#39; 1&#39;字符值不是整数值,例如在数组声明中:s [limit]。 &#34;限制&#34;是单个int值; 100000.你的数组[]被命名为&#34; s&#34;这是一个数据类型&#34; char&#34;存储字符;您已分配了一个数值。 (如果我的想法不正确,请纠正我,或者,我可以更好地自己编码)TY&gt;

答案 2 :(得分:0)

包括

包括

使用命名空间std; int const limit = 100000;

int main(){

int k;
char s[limit];



cout << "Enter a k limit: \n" ;
cin >> k;
cout << "You entered: " << k << endl;
cout << "Enter your 0's and 1's. \n";
cin >> s;
cout << "you entered: " << s << '\n';



for (int j = 0; j < k; j++) {
    for (int i = 0; i < sizeof(s); i++) {
        if (s[i + 1] == '0' && s[i] == '1') {
            s[i + 1] = '1';
            s[i] = '0';
        }
    }
    cout << s;

}
return 0;

}