gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 05:17:21 25 4
gpt4 key购买 nike

我有一个用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com