用c语言编写程序,输入一组整数存入一维数组,再按逆序重新存放后再输出。
时间: 2023-06-20 16:04:13 浏览: 155
以下是一个简单的示例程序,实现了输入一组整数存入一维数组,再按逆序重新存放后再输出的功能。
```c
#include <stdio.h>
int main()
{
int n, i, temp;
printf("请输入数字的个数:");
scanf("%d", &n);
int arr[n];
printf("请输入数字:");
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
printf("原始数组:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
// 数组逆序
for (i = 0; i < n/2; i++) {
temp = arr[i];
arr[i] = arr[n-1-i];
arr[n-1-i] = temp;
}
printf("\n逆序后的数组:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
运行程序后,会提示输入数字的个数,再提示输入数字。程序会将输入的数字存入一维数组中,并输出原始数组和逆序后的数组。
相关问题
用C语言写,输入n个整数存入一维数组,再逆序重新存放后输出,需要用到指针
以下是用指针实现逆序存放数组并输出的C语言代码:
```c
#include <stdio.h>
void reverse(int *arr, int n) {
int *p1 = arr; // 指向数组头部
int *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]);
}
printf("原始数组:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
reverse(arr, n);
printf("逆序后的数组:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
首先通过 `scanf` 函数读入数组元素个数和数组元素,然后通过指针实现数组元素的逆序存放,最后再通过循环输出逆序后的数组。
用C语言写,输入n个整数存入一维数组,再逆序重新存放,最后输出,需要用到指针
### 回答1:
可以使用指针来实现:
```
#include <stdio.h>
int main()
{
int n; //数组元素个数
int i;
printf("请输入数组元素个数:");
scanf("%d",&n);
int a[n]; //定义数组
int *p; //定义指针
p=a;
printf("请输入数组元素:");
for(i=0;i<n;i++)
{
scanf("%d",p);
p++;
}
p=a+n-1; //使指针指向最后一个元素
printf("逆序输出数组元素:");
for(i=0;i<n;i++)
{
printf("%d ",*p);
p--;
}
printf("\n");
return 0;
}
```
### 回答2:
C语言实现如下:
```c
#include <stdio.h>
void reverseArray(int *arr, int n) {
int *start = arr;
int *end = arr + n - 1;
while (start < end) {
int temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
int main() {
int n;
printf("请输入整数的个数: ");
scanf("%d", &n);
int arr[n];
printf("请输入%d个整数:\n", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
reverseArray(arr, n);
printf("逆序后的数组为:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
首先在 `main()` 函数中,通过用户输入来确定整数个数 `n`,并声明一个大小为 `n` 的数组 `arr`。
接下来,我们定义了 `reverseArray()` 函数,该函数使用两个指针 `start` 和 `end` 分别指向数组的起始位置和结束位置。然后,它使用一个循环不断将 `start` 和 `end` 指向的元素交换,同时将 `start` 向前移动,将 `end` 向后移动,直到它们相遇。这样就完成了数组的逆序操作。
最后,在 `main()` 函数中,我们调用 `reverseArray()` 函数来逆序存放数组 `arr`,并使用循环遍历数组,并输出逆序后的数组元素。
### 回答3:
使用指针可以很方便地操作数组中的元素。要实现输入n个整数存入一维数组,并进行逆序重新存放,可以按以下步骤进行:
1. 首先,声明一个整型指针变量和一个整型变量n,用于存储输入的整数个数。
2. 动态分配一个长度为n的整型数组,通过malloc函数实现。同时,检查内存分配是否成功。
3. 利用for循环,依次输入n个整数,并使用指针遍历数组,将输入的整数存储在数组中。
4. 再次利用for循环,通过指针遍历数组,并将数组元素逆序重新存放。可以使用两个指针变量,一个指向数组的开头,一个指向数组的末尾,交换它们的值,并逐次向中间靠拢。
5. 最后,利用for循环遍历逆序后的数组,并输出每个元素的值。
以下是使用C语言编写的实现代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int *arr;
int n;
printf("请输入整数的个数:");
scanf("%d", &n);
arr = (int *) malloc(n * sizeof(int));
if (arr == NULL) {
printf("内存分配失败");
return -1;
}
printf("请输入整数:\n");
for (int i = 0; i < n; i++) {
scanf("%d", arr + i);
}
int *start = arr;
int *end = arr + n - 1;
while(start < end) {
int temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
printf("逆序后的数组为:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
free(arr);
return 0;
}
```
这样,就能够实现输入n个整数存入一维数组,并将数组逆序重新存放,最后输出的功能。
阅读全文