将一个数组中的值按逆序重新存放

该篇博客介绍如何使用C++编程实现数组元素的逆序操作,通过输入1,2,3,4,5,程序将输出5,4,3,2,1。主要代码逻辑包括读取数组元素,然后利用临时变量交换数组前后位置的值,最终输出逆序后的数组。" 70163122,6661389,JS实现扑克牌洗牌算法,"['前端开发', 'JavaScript', '算法', '数据结构']

将一个数组中的值按逆序重新存放。例如,原来顺序为1,2,3,4,5,要求改为5,4,3,2,1。

#include "stdafx.h"
#include<iostream>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
int a[5];
int i;
for(i=0;i<5;i++)
{
cin>>a[i];
}
for(i=0;i<3;i++)
{
int t;
t=a[i];
a[i]=a[4-i];
a[4-i]=t;
}
for(i=0;i<5;i++)
{
cout<<a[i]<<" ";
}
return 0;
}

在C语言中,有多种方法可以实现数组元素的逆序存放,下面为你详细介绍几种常见的实现方式: ### 方法一:使用while循环 ```c #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #define M 10 int main() { int a[M], m, n, temp; for (m = 0; m < M; m++) scanf("%d", &a[m]); m = 0; n = M - 1; while (m < n) { temp = a[m]; a[m] = a[n]; a[n] = temp; m++; n--; } for (m = 0; m < M; m++) printf("%d ", a[m]); return 0; } ``` 此方法先通过`for`循环读取数组元素,接着利用`while`循环交换数组首尾元素,逐步向中间靠拢,直至完成逆序。当`m < n`不满足时,循环结束,数组逆序完成。由于数组下标从0开始,所以`n`初始化为`M - 1` [^1]。 ### 方法二:通用思路实现 ```c #include <stdio.h> int main() { int len; printf("请输入数组元素个数: "); scanf("%d", &len); int a[len]; printf("请输入数组元素: "); for (int i = 0; i < len; i++) { scanf("%d", &a[i]); } int i = 0, j = len - 1; while (i < j) { int temp = a[i]; a[i] = a[j]; a[j] = temp; i++; j--; } for (int i = 0; i < len; i++) { printf("%d ", a[i]); } return 0; } ``` 该方法先定义数组并计算其长度,通过键盘录入元素个数和元素,再使用`while`循环交换元素,最后遍历数组输出逆序结果。因不确定录入元素个数,所以使用`while`循环 [^2]。 ### 方法三:PTA题目解法 ```c int main() { int n; scanf("%d", &n); int a[n]; for (int i = 0; i < n; i++) { scanf("%d", &a[i]); } for (int i = n - 1; i > 0; i--) { printf("%d ", a[i]); } printf("%d", a[0]); return 0; } ``` 此方法针对特定输入输出格式要求,先读取元素个数`n`,再读取`n`个整数存入数组,最后从数组末尾开始输出元素,实现逆序输出 [^3]。 ### 方法四:使用指针函数 ```c #include <stdio.h> const int maxn = 1005; int a[maxn]; void inv(int *x, int n) { int t, mid = (n - 1) / 2; int *p, *i, *j; i = x; j = x + n - 1; p = x + mid; while (i <= p) { t = *i; *i = *j; *j = t; i++; j--; } } int main() { int n; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &a[i]); } inv(a, n); for (int i = 0; i < n; i++) { printf("%d ", a[i]); } return 0; } ``` 该方法定义了一个`inv`函数,以指针变量作为形参。在函数中,通过指针操作交换数组元素,实现逆序。在`main`函数中调用`inv`函数完成数组逆序 [^4]。 ### 方法五:使用for循环 ```c #include <stdio.h> #define N 7 int main() { static int a[N] = {12, 9, 16, 5, 7, 2, 1}, k, s; for (k = 0; k < N; k++) printf("%4d", a[k]); for (k = 0; k < N / 2; k++) { s = a[k]; a[k] = a[N - k - 1]; a[N - k - 1] = s; } printf("\n"); for (k = 0; k < N; k++) printf("%4d", a[k]); return 0; } ``` 此方法使用`for`循环,将数组前半部分元素与后半部分对应元素交换,实现逆序 [^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值