把一个数组的零元素放到数组左边,其余放后面的代码,C语言,
时间: 2024-09-27 22:12:18 浏览: 31
在C语言中,可以使用两个指针和一个临时变量来实现这个操作,这里提供一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
void move_zeros(int* arr, int size) {
int non_zero = 0; // 记录非零元素的位置
for (int i = 0; i < size; i++) {
if (arr[i] != 0) { // 遇到非零元素
// 将非零元素移动到正确位置,并更新non_zero
arr[non_zero++] = arr[i];
}
}
// 将剩余的零元素填充到数组开头
while (non_zero < size) {
arr[non_zero++] = 0;
}
}
int main() {
int arr[] = {0, 1, 0, 3, 12, 0};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Original array:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
move_zeros(arr, n);
printf("\nArray with zeros at the beginning:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
在这个例子中,`move_zeros`函数接受一个整型数组和它的大小作为输入,通过遍历数组将所有非零元素移到数组的前部,最后填充剩余的零。
阅读全文