2025-03-20 学习记录--C/C++-PTA 练习7-3 将数组中的数逆序存放

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻

一、题目描述 ⭐️

练习7-3 将数组中的数逆序存放

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

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

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

输入样例:

4
10 8 1 2

输出样例:

2 1 8 10

二、代码(C语言)⭐️

#include <stdio.h>  // 引入标准输入输出库,用于使用 scanf 和 printf 函数

int main() {
    int n; // 定义一个整型变量 n,用于存储数组的长度
    scanf("%d", &n); // 从输入读取数组的长度 n

    int numArr[n]; // 定义一个长度为 n 的整型数组 numArr,用于存储输入的数字

    // 从后往前读取数组元素
    for (int i = n - 1; i >= 0; i--) { // 从数组的最后一个位置开始向前遍历
        scanf("%d", &numArr[i]); // 读取当前数字并存储到 numArr[i]
    }

    // 从前往后输出数组元素
    for (int i = 0; i < n; i++) { // 从数组的第一个位置开始向后遍历
        if (i == 0) { // 如果是第一个元素
            printf("%d", numArr[i]); // 直接输出,不加空格
        } else { // 如果是其他元素
            printf(" %d", numArr[i]); // 在前面加一个空格后输出
        }
    }

    return 0; // 程序正常结束
}

在这里插入图片描述
在这里插入图片描述

### 回答1: 将数组中的逆序存放,即将数组中的第一个元素和最后一个元素交换,第二个元素和倒第二个元素交换,以此类推,直到数组中间位置。可以使用双指针法,一个指针指向数组的第一个元素,另一个指针指向数组的最后一个元素,然后交换它们的值,再将两个指针分别向中间移动,重复以上操作,直到两个指针相遇。 ### 回答2: 题目说明: 本题要求我们编写程序,将一个包含n个整数数组倒序存放。 分析思路: 倒序存放个数组,可以用两个指针分别指向数组的首尾元素,然后交换它们的值,然后依次向中间逼近,直到两个指针相遇。 代码实现: C++代码实现如下: ```c++ #include <iostream> using namespace std; int main() { int n; cin >> n; //输入数组长度 int a[n]; //定义一个n元素的数组a for(int i = 0; i < n; ++i) //输入n个整数 { cin >> a[i]; } for(int i = 0; i < n / 2; ++i) //将数组中的逆序存放 { swap(a[i], a[n - i - 1]); } for(int i = 0; i < n; ++i) //输出逆序存放后的数组 { cout << a[i] << " "; } return 0; } ``` Python3代码实现如下: ```python n = int(input()) #输入数组长度 a = list(map(int, input().split())) #将一行输入转化为列表a for i in range(n // 2): #将数组中的逆序存放 a[i], a[n - i - 1] = a[n - i - 1], a[i] print(" ".join(str(i) for i in a)) #输出逆序存放后的数组 ``` Java代码实现如下: ```java import java.util.Scanner; public class Main { public static void main(String [] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); //输入数组长度 int [] a = new int [n]; //定义一个n元素的数组a for(int i = 0; i < n; ++i) //输入n个整数 { a[i] = scan.nextInt(); } for(int i = 0; i < n / 2; ++i) //将数组中的逆序存放 { int temp = a[i]; a[i] = a[n - i - 1]; a[n - i - 1] = temp; } for(int i = 0; i < n; ++i) //输出逆序存放后的数组 { System.out.print(a[i] + " "); } } } ``` 总结: 本题需要注意的是交换两个数字的值,可以使用C++中的swap函,Python3中的多重赋值,Java中的暂存变量等方式,需要根据所选的语言来选择对应的方式。 ### 回答3: 题目描述 将一个数中的逆序存放。例如,原来的顺序为1, 6, 5, 3, 2, 4,存放后变成4, 2, 3, 5, 6, 1。 输入格式 输入的第一行包含一个整数n,表示数组中元素的个数。 第二行包含n个整数,表示数组中的元素。 输出格式 输出一行,包含n个整数,表示逆序存放后的数组。 输入样例 6 1 6 5 3 2 4 输出样例 4 2 3 5 6 1 题目分析 题目要求将一个数中的逆序存放,此时需要将数组中元素进行逆序排列,并将排列后的结果输出。由于题目中给出了数组中元素的个数n和n个整数,因此我们可以使用一个数组来存放这些元素,然后使用循环将其逆序排列,最后输出即可。 具体而言,这道题目可以按照以下步骤实现: 1. 读取输入的数组元素的个数n 2. 根据n的大小创建一个长度为n的数组,并读取元素 3. 使用循环将数组中的元素逆序排列 4. 输出排列后的数组元素 代码实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小呀小萝卜儿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值