c++算法问题? 70

我们热爱编程的小明同学,因为喜欢编程,所以特别喜欢数字0。在一串数字当中,只要他遇到数字0,就会将这个0多写一次,其余的元素不变,依次往后顺移,注意数组长度不可改变。现在... 我们热爱编程的小明同学,因为喜欢编程,所以特别喜欢数字0。在一串数字当中,只要他遇到数字0,就会将这个0多写一次,其余的元素不变,依次往后顺移,注意数组长度不可改变。
现在请你编写程序,将题中给定的一串数字中的每一个零都多写一遍。最后输出重新写完后的数组

从测试集获取输入内容,并打印输入的内容。
展开
 我来答
呵呵x10b8
2023-03-09
知道答主
回答量:41
采纳率:0%
帮助的人:2万
展开全部

s = input()  # 读取输入字符串

n = len(s)   # 字符串长度

i = 0

while i < n:

if s[i] == '0':

s = s[:i+1] + '0' + s[i+1:]  # 在零后面再插入一个零

n += 1  # 字符串长度增加1

i += 2  # 跳过插入的那个零

else:

i += 1  # 继续向后遍历

print(s)  # 输出重复后的字符串

这个实现会遍历整个字符串,如果遇到了一个零,就在它后面插入一个零,然后将字符串长度加一,继续向后遍历。由于每插入一个零,字符串长度就会增加一,所以需要在插入零后将遍历的索引增加2,以跳过插入的那个零。最终输出重复后的字符串。

software知识分享
2023-03-09
知道答主
回答量:15
采纳率:0%
帮助的人:7120
展开全部
#include <iostream>
using namespace std;
int main() {
int nums[100]; // 定义一个长度为100的数组,用于存储输入的数字序列
int len = 0; // 记录数字序列的实际长度,初始值为0
// 从标准输入流中读入数字序列,直到读到非数字字符或达到数组长度上限
char c;
while (cin >> nums[len]) {
len++;
c = getchar();
if (c != ' ' && c != '\n') break; // 读到非数字字符时退出循环
}
// 遍历数组,如果当前元素为0,则将其多写一次
for (int i = 0; i < len; i++) {
if (nums[i] == 0) {
// 将数组中i以后的元素都往后移一位
for (int j = len; j > i; j--) {
nums[j] = nums[j-1];
}
nums[i+1] = 0; // 在i+1的位置上添加一个0
len++; // 数组长度加1
i++; // 跳过新添加的0,继续往后遍历
}
}
// 输出重新写完后的数组
for (int i = 0; i < len; i++) {
cout << nums[i] << " ";
}
cout << endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式