c语言中将不多于10个的正整数输入到数组a中,以-1作为结束符,要求将数组的值按逆序重新存放并输出(不包含-1)
时间: 2024-12-18 10:19:40 浏览: 3
C语言程序设计-编写函数fun将一个数组中的值按逆序存放,并在main()函数中输出;
4星 · 用户满意度95%
在 C 语言中,你可以使用循环结构和临时变量来完成这个任务。以下是基本步骤:
1. 首先,创建一个动态大小的数组 `a` 和一个计数器 `count`,用于存储正整数。
```c
int *a = NULL;
int count = 0;
```
2. 使用 `fgets` 函数从用户那里读取输入,直到遇到 `-1` 结束标志。记得分配足够的内存来存储数组元素。
```c
size_t len;
while ((len = scanf("%d", &a[count])) == 1 && a[count] != -1) {
count++;
}
a = realloc(a, count * sizeof(int)); // 如果需要,扩大数组空间
```
3. 逆序数组。由于我们无法直接修改数组的长度,可以遍历数组,将元素逐个放入新数组 `reverse_a` 中,并保持逆序。
```c
int *reverse_a = malloc(count * sizeof(int));
for (int i = count - 1; i >= 0; i--) {
reverse_a[i] = a[i];
}
free(a); // 释放原数组
a = reverse_a;
```
4. 最后,遍历并打印逆序后的数组,但不包括 `-1`。
```c
for (int i = 0; i < count; i++) {
printf("%d ", a[i]);
}
printf("\n");
```
5. 记得处理好内存,当不再需要数组时,释放 `reverse_a` 的内存。
```c
free(reverse_a);
```
阅读全文