C语言:从键盘读入 n 个整数放入数组中,删除数组中所有值为 0 的元素,其后元素向数组首端移动。输出删除后数组中元素的个数并依次输出数组元素。
时间: 2024-12-09 11:17:04 浏览: 21
在C语言中,你可以通过以下几个步骤实现这个功能:
1. 首先,你需要创建一个动态数组来存储输入的整数,因为n的大小可能是未知的。
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int *arr; // 存储整数的指针
int n, i;
```
2. 然后,从键盘读取用户输入的n,并分配内存给数组。
```c
printf("请输入元素个数: ");
scanf("%d", &n);
arr = (int*) malloc(n * sizeof(int)); // 分配内存
```
3. 接着,循环读取n个整数并存入数组,同时检查是否为0,若为0则跳过。
```c
for (i = 0; i < n; ++i) {
scanf("%d", &arr[i]);
if (arr[i] != 0) { // 如果不是0,则保留
continue;
}
}
```
4. 删除数组中所有值为0的元素后,更新元素个数。由于数组的实际长度已经减少了,可以简单地使用`i`作为新数组的长度。
```c
int count = i; // 更新元素个数
```
5. 输出元素个数以及剩余的非零元素。
```c
printf("删除后数组元素个数: %d\n", count);
// 输出元素
for (i = 0; i < count; ++i) {
printf("%d ", arr[i]);
}
6. 最后,记得释放之前分配的内存。
```c
free(arr);
return 0;
}
阅读全文