c++算法问题? 70
我们热爱编程的小明同学,因为喜欢编程,所以特别喜欢数字0。在一串数字当中,只要他遇到数字0,就会将这个0多写一次,其余的元素不变,依次往后顺移,注意数组长度不可改变。现在...
我们热爱编程的小明同学,因为喜欢编程,所以特别喜欢数字0。在一串数字当中,只要他遇到数字0,就会将这个0多写一次,其余的元素不变,依次往后顺移,注意数组长度不可改变。
现在请你编写程序,将题中给定的一串数字中的每一个零都多写一遍。最后输出重新写完后的数组
从测试集获取输入内容,并打印输入的内容。 展开
现在请你编写程序,将题中给定的一串数字中的每一个零都多写一遍。最后输出重新写完后的数组
从测试集获取输入内容,并打印输入的内容。 展开
2个回答
展开全部
展开全部
#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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询