编写程序,输入n个整数存入一维数组,再按逆序重新存放后再输出。(用指针实现)
时间: 2023-05-31 15:17:49 浏览: 903
### 回答1:
以下是用指针实现的程序:
```c
#include <stdio.h>
void reverse(int *arr, int n) {
int *p1 = arr, *p2 = arr + n - 1;
while (p1 < p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}
}
int main() {
int n;
printf("请输入整数个数:");
scanf("%d", &n);
int arr[n];
printf("请输入%d个整数:", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
reverse(arr, n);
printf("逆序存放后的数组为:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
程序中定义了一个 `reverse` 函数,用于将数组逆序存放。该函数接受两个参数,一个是指向数组首元素的指针,另一个是数组的长度。函数中使用两个指针 `p1` 和 `p2` 分别指向数组的首尾元素,然后交换它们所指向的元素,直到 `p1` 大于等于 `p2` 为止。
在 `main` 函数中,首先读入整数个数 `n`,然后定义一个长度为 `n` 的数组 `arr`,并读入 `n` 个整数。接着调用 `reverse` 函数将数组逆序存放,并输出逆序存放后的数组。
### 回答2:
编写程序实现输入n个整数存入一维数组,然后将数组按逆序重新存放并输出,可以使用指针实现。以下是实现思路:
1. 定义一个函数,传入一个整型数组指针和数组长度,该函数的功能是将数组按逆序重新存放。
2. 在函数内部定义指向数组首尾的指针,然后使用循环交换首尾指针指向的元素,直到首指针大于等于尾指针。
3. 在主函数中调用该函数,传入数组的地址和数组的长度,然后输出逆序后的数组。
实现代码如下:
```c
#include <stdio.h>
void reverse(int *arr, int len)
{
int *p = arr;
int *q = arr + len - 1;
while (p < q)
{
int t = *p;
*p = *q;
*q = t;
p++;
q--;
}
}
int main()
{
int arr[100];
int n;
printf("请输入数组的长度:");
scanf("%d", &n);
printf("请输入数组的元素:");
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
reverse(arr, n);
printf("逆序后的数组:");
for (int i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
```
在程序中,使用reverse函数实现数组的逆序存放。将首指针p指向数组的首地址,将尾指针q指向数组的尾地址,然后交换p和q指向的元素,直到p >= q为止。最后在主函数中调用该函数,输出逆序后的数组。
### 回答3:
编写程序,输入n个整数存入一维数组,再按逆序重新存放后再输出。
首先需要输入n个整数,可以通过scanf函数进行输入,同时申请一个长度为n的一维数组,用于存储输入的n个整数。
接下来,需要将输入的n个整数按逆序重新存放,可以使用指针实现。
首先定义两个指针,一个指向数组的起始位置,一个指向数组的末尾位置。然后交换两个指针指向的值,再将指针向中间移动,继续交换两个指针指向的值,重复上述过程直到两个指针相遇。
最后,输出经过逆序存放后的数组,同样使用指针实现。
以下是完整的程序代码:
#include <stdio.h>
int main()
{
int n, *p1, *p2, temp;
printf("请输入整数个数n:");
scanf("%d", &n);
int arr[n];
printf("请输入%d个整数:", n);
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
p1 = arr;
p2 = arr + n - 1;
while (p1 < p2)
{
temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}
printf("逆序输出后的数组为:");
for (int i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
阅读全文