C 如何将一个元素移动到固定数组的左侧
根据我的理解,其余未赋值的索引将为0。如果我想向左移动每个元素(我想删除第一个值,即索引0)。我如何做到这一点,而不会导致最后一个分配了整数的索引出现重复值 例如: 电流阵列C 如何将一个元素移动到固定数组的左侧,c,C,根据我的理解,其余未赋值的索引将为0。如果我想向左移动每个元素(我想删除第一个值,即索引0)。我如何做到这一点,而不会导致最后一个分配了整数的索引出现重复值 例如: 电流阵列 int array[10] = {1,2,3,4,5} +左1: output: 1234500000 我尝试了以下代码: output: 2345500000 还有,在有人说这是一个重复之前,我环顾四周,没有线程使用固定数组进行解释,即使用0作为默认值 感谢您的回复 output: 2345000000 我不明
int array[10] = {1,2,3,4,5}
+左1:
output: 1234500000
我尝试了以下代码:
output: 2345500000
还有,在有人说这是一个重复之前,我环顾四周,没有线程使用固定数组进行解释,即使用0作为默认值
感谢您的回复
output: 2345000000
我不明白为什么这个街区在那里。不可能进入if语句内部
对于预期的输出,并且假设这是一个int
s数组,我怀疑解决方案是在print语句中只输出四个值,但如果数组的最后一个元素应为零,则可以在for
循环后执行此操作:
if (array[i] == 0)
{
array[i-1] = 0;
}
如果不希望旋转,则:
intput: 1234500000
output: 2345000000
int-arr[]//初始化它
int siz=sizeof(arr)/sizeof(arr[0]);
int指数=0;
(index < p>您只需要手动将最后一个值设置为0,我也会考虑使用内置的<代码> MeMeTest< /Case>函数,该函数用于围绕源和目的地重叠的数据移动。
int arr[]; //initialize it
int siz=sizeof(arr)/sizeof(arr[0]);
int index=0;
while(index<siz-1)
{
arr[index]=arr[index+1];
index++;
}
arr[index]=0; //0 default value at the end of the array
你不想在旋转后将1
放在5
的旧位置吗?不,基本上程序使用另一个变量的第一个索引,数组需要像队列一样向左移动+1。如果你调用order_数组(5,数组)
forint数组[10]={1,2,3,4,5,6,7,8,9,10},你想要什么结果
?感谢您的回复。我尝试了该代码,因为5没有被下一个0替换,它只是两个5。这是我不想要的。我想要234500000,因此如果没有两个5,我已经修改了答案,如果您想要234500000,请在找到默认0时不要执行任何操作。
#include <stdio.h>
#define ARRAY_SIZE 10
void order_array(int size, int* array) {
for (int i = 0; i < size; i++) {
if (!array[i]) {
continue;
}
if (i + 1 < size)
array[i] = array[i + 1];
}
}
int main() {
int array[ARRAY_SIZE] = {1, 2, 3, 4, 5};
printf("intput: ");
for (int i = 0; i < ARRAY_SIZE; i++) {
printf("%d", array[i]);
}
printf("\n");
order_array(ARRAY_SIZE, array);
printf("output: ");
for (int i = 0; i < ARRAY_SIZE; i++) {
printf("%d", array[i]);
}
printf("\n");
return 0;
}
intput: 1234500000
output: 2345000000
int arr[]; //initialize it
int siz=sizeof(arr)/sizeof(arr[0]);
int index=0;
while(index<siz-1)
{
arr[index]=arr[index+1];
index++;
}
arr[index]=0; //0 default value at the end of the array
void order_array(int size, int array[]){
memmove(array, array+1, (size-1) * sizeof(array[0]));
array[size-1] = 0;
}