将一个数组逆序输出。-多语言

目录

C 语言实现

方法 1: 交换元素

方法 2: 使用辅助数组

方法 3: 使用递归

 方法 4: 使用标准库函数(C99及以上)

总结

Python 实现

方法 1: 交换元素

方法 2: 使用切片 

方法 3: 使用 reversed() 函数

方法 4: 使用 list.reverse() 方法

方法 5: 使用 for 循环和 append()

总结

Java 实现

方法 1: 交换元素

方法 2: 使用 Collections.reverse() 方法(适用于对象数组)

方法 3: 使用递归方法

方法 4: 使用 Java 8 的流(Streams)

Js 实现


题目:将一个数组逆序输出。

程序分析:用第一个与最后一个交换。

C 语言实现

这个程序的功能是反转一个数组。

方法 1: 交换元素

#include <stdio.h>
#define N 10int main() {int a[N] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // 初始化数组int i, t;// 打印原始数组printf("原始数组是:\n");for (i = 0; i < N; i++) {printf("%d ", a[i]);}// 反转数组for (i = 0; i < N / 2; i++) {t = a[i];a[i] = a[N - 1 - i];a[N - 1 - i] = t;}// 打印反转后的数组printf("\n反转后的数组:\n");for (i = 0; i < N; i++) {printf("%d ", a[i]);}printf("\n");return 0;
}
  1. 数组初始化:数组 a 被初始化为包含 0 到 9 的整数。
  2. 打印原始数组:使用循环打印原始数组的内容。
  3. 反转数组
    • 使用一个循环遍历数组的前半部分,将每个元素与其对应的后半部分元素交换。
    • 通过临时变量 t 来完成交换。
  4. 打印反转后的数组:再次使用循环打印反转后的数组内容。

方法 2: 使用辅助数组

我们可以创建一个辅助数组来存储反转后的结果,然后将其复制回原数组。

#include <stdio.h>
#define N 10int main() {int a[N] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // 初始化数组int b[N]; // 辅助数组int i;// 打印原始数组printf("原始数组是:\n");for (i = 0; i < N; i++) {printf("%d ", a[i]);}// 使用辅助数组反转for (i = 0; i < N; i++) {b[i] = a[N - 1 - i]; // 将原数组的元素反向存储到辅助数组}// 将辅助数组复制回原数组for (i = 0; i < N; i++) {a[i] = b[i];}// 打印反转后的数组printf("\n反转后的数组:\n");for (i = 0; i < N; i++) {printf("%d ", a[i]);}printf("\n");return 0;
}

方法 3: 使用递归

我们还可以使用递归的方法来反转数组。

#include <stdio.h>
#define N 10void reverseArray(int arr[], int start, int end) {if (start >= end) {return; // 基本情况}// 交换元素int temp = arr[start];arr[start] = arr[end];arr[end] = temp;// 递归调用reverseArray(arr, start + 1, end - 1);
}int main() {int a[N] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // 初始化数组int i;// 打印原始数组printf("原始数组是:\n");for (i = 0; i < N; i++) {printf("%d ", a[i]);}// 反转数组reverseArray(a, 0, N - 1);// 打印反转后的数组printf("\n反转后的数组:\n");for (i = 0; i < N; i++) {printf("%d ", a[i]);}printf("\n");return 0;
}

 方法 4: 使用标准库函数(C99及以上)

如果使用 C99 或更高版本,可以使用 memcpymemmove 函数来反转数组。

#include <stdio.h>
#include <string.h> // 包含 memcpy 和 memmove 函数
#define N 10int main() {int a[N] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // 初始化数组int i;// 打印原始数组printf("原始数组是:\n");for (i = 0; i < N; i++) {printf("%d ", a[i]);}// 反转数组for (i = 0; i < N / 2; i++) {// 使用 memmove 进行反转int temp = a[i];memmove(&a[i], &a[N - 1 - i], sizeof(int));memmove(&a[N - 1 - i], &temp, sizeof(int));}// 打印反转后的数组printf("\n反转后的数组:\n");for (i = 0; i < N; i++) {printf("%d ", a[i]);}printf("\n");return 0;
}

总结

以上是四种不同的方法来反转数组。每种方法都有其优缺点,选择哪种方法取决于具体的需求和上下文。使用辅助数组的方法简单直观,递归方法优雅而富有表现力,而使用标准库函数则可以提高代码的可读性和简洁性。

Python 实现

这个程序的功能是反转一个数组,并打印原始数组和反转后的数组。

方法 1: 交换元素

def main():a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  # 初始化数组# 打印原始数组print("原始数组是:")print(" ".join(map(str, a)))# 反转数组for i in range(len(a) // 2):a[i], a[len(a) - 1 - i] = a[len(a) - 1 - i], a[i]  # 交换元素# 打印反转后的数组print("反转后的数组:")print(" ".join(map(str, a)))if __name__ == "__main__":main()
  1. 数组初始化:数组 a 被初始化为包含 0 到 9 的整数。
  2. 打印原始数组:使用 joinmap 函数将数组元素转换为字符串并打印。
  3. 反转数组
    • 使用一个循环遍历数组的前半部分,将每个元素与其对应的后半部分元素交换。
    • 通过 Python 的元组解包语法来完成交换。
  4. 打印反转后的数组:再次使用 joinmap 函数打印反转后的数组内容。

方法 2: 使用切片 

Python 的切片功能非常强大,可以用来简洁地反转数组。

def main():a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  # 初始化数组# 打印原始数组print("原始数组是:")print(" ".join(map(str, a)))# 使用切片反转数组a = a[::-1]# 打印反转后的数组print("反转后的数组:")print(" ".join(map(str, a)))if __name__ == "__main__":main()

方法 3: 使用 reversed() 函数

Python 提供了一个内置的 reversed() 函数,可以返回一个反转的迭代器。

def main():a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  # 初始化数组# 打印原始数组print("原始数组是:")print(" ".join(map(str, a)))# 使用 reversed() 函数反转数组a = list(reversed(a))# 打印反转后的数组print("反转后的数组:")print(" ".join(map(str, a)))if __name__ == "__main__":main()

方法 4: 使用 list.reverse() 方法

Python 的列表对象有一个 reverse() 方法,可以就地反转列表。

def main():a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  # 初始化数组# 打印原始数组print("原始数组是:")print(" ".join(map(str, a)))# 使用 list.reverse() 方法反转数组a.reverse()# 打印反转后的数组print("反转后的数组:")print(" ".join(map(str, a)))if __name__ == "__main__":main()

方法 5: 使用 for 循环和 append()

可以使用一个新的空列表,通过循环将原列表的元素反向添加到新列表中。

def main():a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  # 初始化数组# 打印原始数组print("原始数组是:")print(" ".join(map(str, a)))# 使用 for 循环反转数组reversed_a = []for i in range(len(a) - 1, -1, -1):reversed_a.append(a[i])# 打印反转后的数组print("反转后的数组:")print(" ".join(map(str, reversed_a)))if __name__ == "__main__":main()

总结

以上是几种不同的方法来反转数组。每种方法都有其优缺点,选择哪种方法取决于具体的需求和上下文。使用切片的方法简洁明了,reversed() 函数和 list.reverse() 方法也非常方便,而使用循环和 append() 方法则展示了更基础的操作。

Java 实现

方法 1: 交换元素

public class ReverseArray {public static void main(String[] args) {int[] a = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // 初始化数组// 打印原始数组System.out.println("原始数组是:");for (int num : a) {System.out.print(num + " ");}// 反转数组for (int i = 0; i < a.length / 2; i++) {// 交换元素int temp = a[i];a[i] = a[a.length - 1 - i];a[a.length - 1 - i] = temp;}// 打印反转后的数组System.out.println("\n反转后的数组:");for (int num : a) {System.out.print(num + " ");}System.out.println();}
}
  1. 数组初始化:数组 a 被初始化为包含 0 到 9 的整数。
  2. 打印原始数组:使用增强的 for 循环打印原始数组的内容。
  3. 反转数组
    • 使用一个循环遍历数组的前半部分,将每个元素与其对应的后半部分元素交换。
    • 通过临时变量 temp 来完成交换。
  4. 打印反转后的数组:再次使用增强的 for 循环打印反转后的数组内容。

方法 2: 使用 Collections.reverse() 方法(适用于对象数组)

如果你使用的是对象数组(例如 Integer[]),可以利用 Collections.reverse() 方法来反转数组。首先需要将数组转换为列表。

import java.util.Arrays;
import java.util.Collections;
import java.util.List;public class ReverseArray {public static void main(String[] args) {Integer[] a = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // 使用对象数组// 打印原始数组System.out.println("原始数组是:");System.out.println(Arrays.toString(a));// 反转数组List<Integer> list = Arrays.asList(a);Collections.reverse(list);a = list.toArray(new Integer[0]); // 转换回数组// 打印反转后的数组System.out.println("反转后的数组:");System.out.println(Arrays.toString(a));}
}

方法 3: 使用递归方法

可以使用递归来反转数组。以下是一个简单的递归实现:

public class ReverseArray {public static void main(String[] args) {int[] a = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // 初始化数组// 打印原始数组System.out.println("原始数组是:");for (int num : a) {System.out.print(num + " ");}// 反转数组reverseArray(a, 0, a.length - 1);// 打印反转后的数组System.out.println("\n反转后的数组:");for (int num : a) {System.out.print(num + " ");}System.out.println();}public static void reverseArray(int[] arr, int start, int end) {if (start >= end) {return; // 基本情况}// 交换元素int temp = arr[start];arr[start] = arr[end];arr[end] = temp;// 递归调用reverseArray(arr, start + 1, end - 1);}
}

方法 4: 使用 Java 8 的流(Streams)

如果你使用的是 Java 8 或更高版本,可以利用流来反转数组:

import java.util.Arrays;
import java.util.Collections;public class ReverseArray {public static void main(String[] args) {int[] a = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // 初始化数组// 打印原始数组System.out.println("原始数组是:");System.out.println(Arrays.toString(a));// 反转数组int[] reversedArray = Arrays.stream(a).boxed() // 转换为流对象.sorted(Collections.reverseOrder()) // 反转排序.mapToInt(Integer::intValue) // 转换回基本类型.toArray();// 打印反转后的数组System.out.println("反转后的数组:");System.out.println(Arrays.toString(reversedArray));}
}

Js 实现

以下是一个使用 JavaScript 实现的示例,展示了如何反转一个数组并打印原始和反转后的数组:

// 初始化数组
const a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];// 打印原始数组
console.log("原始数组是:", a);// 反转数组
const reversedArray = a.slice().reverse(); // 使用 slice() 创建数组的副本并反转// 打印反转后的数组
console.log("反转后的数组:", reversedArray);
  1. 初始化数组:我们创建了一个包含数字的数组 a
  2. 打印原始数组:使用 console.log 打印原始数组。
  3. 反转数组
    • a.slice() 创建了数组 a 的一个副本,以避免直接修改原始数组。
    • reverse() 方法反转了这个副本。
  4. 打印反转后的数组:使用 console.log 打印反转后的数组。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/61696.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

传智杯 A字符串拼接

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 键盘输入两个字符串&#xff0c;将这两个字符串进行拼接后输出。 输入描述: 键盘输入两个字符串 输出描述: 输出两个字符串拼接后的结果 示例1 输入 hello nihao 输出 helloni…

js高级-ajax封装和跨域

ajax简介及相关知识 原生ajax AJAX 简介 AJAX 全称为 Asynchronous JavaScript And XML&#xff0c;就是异步的 JS 和 XML。 通过 AJAX 可以在浏览器中向服务器发送异步请求&#xff0c;最大的优势&#xff1a;无刷新获取数据。 按需请求&#xff0c;可以提高网站的性能 AJ…

WEB开发: 丢掉包袱,拥抱ASP.NET CORE!

今天的 Web 开发可以说进入了一个全新的时代&#xff0c;前后端分离、云原生、微服务等等一系列现代技术架构应运而生。在这个背景下&#xff0c;作为开发者&#xff0c;你一定希望找到一个高效、灵活、易于扩展且具有良好性能的框架。那么&#xff0c;ASP.NET Core 显然是一个…

D82【python 接口自动化学习】- pytest基础用法

day82 pytest初体验 学习日期&#xff1a;20241128 学习目标&#xff1a;pytest基础用法 -- pytest初体验 学习笔记&#xff1a; 文件命名规范 py测试文件必须以test_开头&#xff08;或_test结尾&#xff09;测试方法必须以test开头测试类必须以Test开头&#xff0c;并且…

前端面试热门题(二)[html\css\js\node\vue)

Vue 性能优化的方法 Vue 性能优化的方法多种多样&#xff0c;以下是一些常用的策略&#xff1a; 使用v-show替换v-if&#xff1a;v-show是通过CSS控制元素的显示与隐藏&#xff0c;而v-if是通过操作DOM来控制元素的显示与隐藏&#xff0c;频繁操作DOM会导致性能下降。因此&am…

HarmonyOS4+NEXT星河版入门与项目实战(23)------实现手机游戏摇杆功能

文章目录 1、案例效果2、案例实现1、代码实现2、代码解释4、总结1、案例效果 2、案例实现 1、代码实现 代码如下(示例): import router from @ohos.router import {ResizeDirection } from @ohos.UiTest import curves

MySQL--视图

目录 1 认识视图 1.1 视图的定义 1.1 创建视图 1.2 查询 1.3 修改 1.4 删除 1.5 视图的优缺点 1.5.1 优点 1.5.2 缺点 1.6 视图的类型 1.7 视图与物化视图 2 视图检查选项 2.1 CASCADED 2.2 LOCAL 3 视图更新及作用 3.1 视图案列结合 3.1.1 屏蔽敏感数据 3.1…

【工具】JS解析XML并且转为json对象

【工具】JS解析XML并且转为json对象 <?xml version1.0 encodingGB2312?> <root><head><transcode>hhhhhhh</transcode></head><body><param>ccccccc</param><param>aaaaaaa</param><param>qqqq<…

全球气候变化驱动因素预测,Python机器学习与深度学习

全球气候变化是现代社会面临的最重要的环境挑战之一&#xff0c;影响了气温、降水、海平面、生态系统等多个方面。气候变化的驱动因素主要包括温室气体排放、气溶胶浓度、火灾频发、海冰融化、叶绿素变化、植被变化和海洋温度上升等。这些因素在全球范围内交互作用&#xff0c;…

不同云计算网络安全等级

导读云计算的本质是服务&#xff0c;如果不能将计算资源规模化/大范围的进行共享&#xff0c;如果不能真正以服务的形式提供&#xff0c;就根本算不上云计算。 等级保护定级流程 定级是开展网络安全等级保护工作的 “基本出发点”&#xff0c;虚拟化技术使得传统的网络边界变…

账本模型

05-账本模型 1 账本模型 1.1 传统线性增长模型 传统的 MySQL 等系统采用线性增长的日志模型&#xff0c;通过一个 Leader 和多个 Follower 进行状态同步。这种方式有单点的带宽瓶颈问题。 1.2 区块链共享账本模型 共享账本&#xff1a;树形增长。在去中心化网络中&#xff0c;…

CPU、MPU、MCU和SOC学习笔记

CPU CPU是Central Processing Unit的缩写计算机的运算控制核心就是CPUCPU是由运算器、控制器和寄存器及相应的总线构成众所周知的三级流水线&#xff1a;取址、译码、执行的对象就是CPUCPU从存储器或高速缓冲存储器中取出指令&#xff0c;放入指令寄存器&#xff0c;并对指令译…

GaussDB(类似PostgreSQL)常用命令和注意事项

文章目录 前言GaussDB&#xff08;类似PostgreSQL&#xff09;常用命令和注意事项1. 连接到GaussDB数据库2. 查看当前数据库中的所有Schema3. 进入指定的Schema4. 查看Schema下的表、序列、视图5. 查看Schema下所有的表6. 查看表结构7. 开始事务8. 查询表字段注释9. 注意事项&a…

request和websocket

当然&#xff0c;可以为你详细介绍 FastAPI 中的 Request 对象。Request 对象在 FastAPI 中扮演着重要的角色&#xff0c;负责封装来自客户端的 HTTP 请求信息。了解 Request 对象的使用方法和属性&#xff0c;有助于你更高效地处理请求数据、访问请求上下文以及进行各种操作。…

深入探索Flax:一个用于构建神经网络的灵活和高效库

深入探索Flax&#xff1a;一个用于构建神经网络的灵活和高效库 在深度学习领域&#xff0c;TensorFlow 和 PyTorch 作为主流的框架&#xff0c;已被广泛使用。不过&#xff0c;Flax 作为一个较新的库&#xff0c;近年来得到了越来越多的关注。Flax 是一个由Google Research团队…

在1~n中、找出能同时满足用3除余2,用5除余3,用7除余2的所有整数。:JAVA

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 在1~n中、找出能同时满足用3除余2&#xff0c;用5除余3&#xff0c;用7除余2的所有整数。 输入描述: 输入一行&#xff0c;包含一个正整数n &#xff0c;n在100000以内 输出描述:…

Python 自动化办公的 10 大脚本

大家好&#xff0c;我是你们的 Python 讲师&#xff01;今天我们将讨论 10 个实用的 Python 自动化办公脚本。这些脚本可以帮助你简化日常工作&#xff0c;提高效率。无论是处理 Excel 文件、发送邮件&#xff0c;还是自动化网页操作&#xff0c;Python 都能派上用场。 1. 批量…

UNITY_GOF_ChainOfResponsibility

责任链模式 经理和高管可以响应采购请求或将其移交给上级。 每个位置都可以有自己的一套规则&#xff0c;他们可以批准这些订单。 首先有一个领导类专门负责处理这些请求之后根据权限分别对子类进行处理在调用的时候会根据处理类的权限进行处理&#xff0c;如果权限不足就传递给…

什么是Git

Git Git是什么&#xff1f;Git核心功能Git的常用命令Git原理对象存储Blob对象Tree对象 分支管理版本合并Git的工作流程Git的底层操作 Git是什么&#xff1f; Git是一种分布式版本控制系统&#xff0c;它可以帮助团队协作开发&#xff0c;跟踪代码变更历史&#xff0c;管理和维…

.net XSSFWorkbook 读取/写入 指定单元格的内容

方法如下&#xff1a; using NPOI.SS.Formula.Functions;using NPOI.SS.UserModel;using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;using OfficeOpenXml.FormulaParsing.Excel.Functions.Numeric;/// <summary>/// 读取Excel指定单元格内容/// </summa…