我有一个用 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;
}
最佳答案
a) 有一个错误的大括号。
b) 您需要将 s[j] = 0
更改为 s[j] = '0'
。
c) 虽然不是错误,但为了澄清起见,我会在第二个 for 循环周围添加花括号。这使代码更易于阅读。
#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++ - 替换char数组中的字符c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42334566/