【PTA题目解答】7-2 将数组中的数逆序存放 (20分)

7-2 将数组中的数逆序存放 (20分)

本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。

输入格式:

输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。

输出格式:

在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。

输入样例:

4
10 8 1 2

输出样例:

2 1 8 10

读取是顺序的,存储的值是逆序的,按顺序输出的值就是逆序的了。 

#include<stdio.h>
int main(){
    int n,i;
    scanf("%d",&n);
    int a[n];
    for(i=n-1;i>=0;i--) scanf("%d",&a[i]);
    for(i=0;i<n;i++) {
        printf("%d",a[i]);
        if(i<n-1) printf(" ");
    }
    return 0;
}

 

  • 12
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
### 回答1: 将数组中逆序存放,即将数组中的第一个元素和最后一个元素交换,第二个元素和倒第二个元素交换,以此类推,直到数组中间的元素。可以使用两个指针,一个指向组的第一个元素,一个指向组的最后一个元素,然后交换它们的值,然后将两个指针向间移动,继续交换,直到两个指针相遇。 ### 回答2: 这道题的思路很简单,就是把数组中的元素逆序存放,也就是将组头尾两端的值互换。我们可以使用两个指针,一个指针指向组的头部,一个指针指向组的尾部,然后用循环不断交换两个指针指向的值,直到指针相遇或者过了间位置为止。 具体实现如下: ``` #include <stdio.h> void reverse_array(int a[], int n); int main() { int a[100], i, n; printf("Enter the number of elements: "); scanf("%d", &n); printf("Enter %d elements: ", n); for (i = 0; i < n; i++) scanf("%d", &a[i]); reverse_array(a, n); printf("The reversed array is: "); for (i = 0; i < n; i++) printf("%d ", a[i]); printf("\n"); return 0; } void reverse_array(int a[], int n) { int i, j, temp; for (i = 0, j = n-1; i < j; i++, j--) { temp = a[i]; a[i] = a[j]; a[j] = temp; } } ``` 上面的代码,`reverse_array` 函实现了将逆序存放的功能,它接受两个参,一个是组名,另一个是数组中元素的个数。函使用了两个指针,`i` 和 `j` 别指向组的头部和尾部,然后用循环不断交换两个指针指向的值,最终得到逆序组。 在主函,我们首先读入组的元素个数以及元素的值,然后调用 `reverse_array` 函逆序存放,最后输出逆序后的组。 ### 回答3: 这道题要求我们将给定逆序存放,可以通过交换组元素的方式实现。具体操作如下: 首先,我们设两个指针i和j,别指向组的第一个和最后一个元素,然后交换它们指向的元素,接着i指针向后移动一位,j指针向前移动一位,继续交换它们指向的元素,直到i指针和j指针相遇为止。 代码实现: ``` #include <stdio.h> #define N 10 int main() { int arr[N], i, j, tmp; printf("请输入一个含有%d个整数组:", N); for (i = 0; i < N; i++) { scanf("%d", &arr[i]); } printf("原组为:"); for (i = 0; i < N; i++) { printf("%d ", arr[i]); } printf("\n"); i = 0; j = N - 1; while (i < j) { tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; i++; j--; } printf("逆序组为:"); for (i = 0; i < N; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; } ``` 以上就是本题的解法,时间复杂度为O(N/2)。这里需要注意的是组元素的下标从0开始,所以组最后一个元素的下标应为N-1。另外,我们可以通过循环语句来遍历整个数组,这样不仅代码简洁,而且可读性更高。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

doreaming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值