前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【03】逆序数组

【03】逆序数组

作者头像
大耳朵土土垚
发布于 2024-03-13 10:41:33
发布于 2024-03-13 10:41:33
15700
代码可运行
举报
文章被收录于专栏:c/c++c/c++
运行总次数:0
代码可运行

💥一、逆序函数是什么?

示例:输入1 4 7 9 3

输出:3 9 7 4 1

通俗来说就是将数组一行数据倒着打印。

✨二、逆序函数原码

🥳1.直接逆序

思路:

1.利用scanf与for循环获取多组数据;

2.用left与right两个变量进行左右交换,交换完左边向右靠近,右边向左边靠近,继续交换,直到 left>=right为止;

图示如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void reverse()
{
	int i = 0;
	int j = 0;
	int tmp = 0;
	printf("请输入你要输入数的个数:");
	scanf("%d", &j);
	int arr[] = { 0 };//注意这里数组没有确定个数

	for (i = 0; i < j; i++)
	{
		scanf("%d", &arr[i]);
	}

	int left = 0;
	int right = j-1;
	while (left <= right)//利用左右下标逐渐向中间靠近
	{
		tmp = arr[left];
		arr[left] = arr[right];
		arr[right] = tmp;
		left++;
		right--;
	}
	for(i = 0;i <=j-1;i++)
	{ 
		printf("%d\n",arr[i]);
	}


}
int main()
{
	reverse();
	return 0;
}

由于上述代码利用数组存储个数时没有确定数组个数就会导致如下情况:

正确做法:

int arr[10] = {0}//允许输入十个数以内的逆序,也可换成100或者其他

修改后代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void reverse()
{
	int i = 0;
	int j = 0;
	int tmp = 0;
	printf("请输入你要输入数的个数(<10):");
	scanf("%d", &j);
	int arr[10] = { 0 };


	for (i = 0; i < j; i++)
	{
		scanf("%d", &arr[i]);
	}

	int left = 0;
	int right = j-1;
	while (left <= right)//利用左右下标逐渐向中间靠近
	{
		tmp = arr[left];
		arr[left] = arr[right];
		arr[right] = tmp;
		left++;
		right--;
	}
	for(i = 0;i <=j-1;i++)
	{ 
		printf("%d\n",arr[i]);
	}


}
int main()
{
	reverse();
	return 0;
}

🥳🥳2.创建临时数组逆序

思路:

将数组的数从后往前放入到临时创建的数组中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void reverse()
{
	int i = 0;
	int j = 0;
	int tmp = 0;
	printf("请输入你要输入数的个数(<10):");
	scanf("%d", &j);
	int arr[10] = { 0 };


	for (i = 0; i < j; i++)
	{
		scanf("%d", &arr[i]);
	}


		//直接逆序
		//tmp = arr[j];//先将最后一个数存储起来
		//for (i = j; i > 0; i--)
		//{
		//	arr[j] = arr[j - 1];//循环逆转
		//}
		//arr[0] = tmp;//将第一个储存最后一个数完成逆转

	//创建临时数组实现逆序
	int tem[10] = { 0 };//创建临时数组
	for (i = 0; i < j; i++)
	{
		tem[i] = arr[j-i- 1];//将arr数组后面的数存储到tem数组前面
	}


	for(i = 0;i <=j-1;i++)//打印逆序后的数组
	{ 
		printf("%d\n",arr[i]);
	}


}
int main()
{
	reverse();
	return 0;
}

🎉三、结言

以上就是C语言实现逆序数组完整实现啦~🌹🌹🌹土土这里用了两种方法一种是直接发利用左右两个指针来遍历,另一种是创建临时数组来将原来的数组中的数从后往前放置,两种方法各有优缺点哦~如果有什么问题,欢迎打在评论区或者私法给我哦~💖💖

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
简单算法;冒泡排序和用指针交叉互换
用户11290664
2024/09/25
540
c语言左旋字符串问题(不同方法超详细解答)
用户11029269
2024/03/19
1040
c语言左旋字符串问题(不同方法超详细解答)
C语言沉浸式刷题【C语言必刷题】(经典题型一站式刷完)【长期更新】
程序分析:strlen是库函数中的一种,通过使用该函数,可以求出字符串的长度 (不包括’\0‘), 我们可以把\0作为终止位置的特性利用起来,采用计数器的方法或者递归的方法求出字 符串长度。
see.
2024/06/04
1410
C语言沉浸式刷题【C语言必刷题】(经典题型一站式刷完)【长期更新】
指针作业来喽~
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
用户11039545
2024/03/28
1190
指针作业来喽~
C语言练习之用函数完成数组元素的逆置
设置left为左下标,right为右下标,temp为交换两个数内容的中间变量 先将下标为left的值赋值给temp,再将下标为right的值赋值给下标为元素left,最后再将temp的值赋值给下标为left的元素 再对left++,同时对right--,一直循环到left>right
摘星
2023/04/28
6130
C语言练习之用函数完成数组元素的逆置
【C语言经典例题】——程序员必须会的经典基础例题(三)
思路: 我们可以看到,三角的两边都是1,并且从第二行(从0开始算)开始,两边之间的数字,都是上一行的两位数字之和,比如第三行的数字3,等于上一行的1+2,等等。如此,把它看成一个二维数组,便可直接入手
诺诺的包包
2023/02/20
7090
【C语言】题集 of ⑩①
🚩write in front🚩    🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家博主 & 星级博主~掘金⇿InfoQ~51CTOP创作者~周榜109﹣总榜1007⇿全网访问量35w+🏅 🆔本文由 謓泽 原创 CSDN首发🙉如需转载还请通知⚠ 📝个人主页-謓泽的博客_CSDN博客 📃 📣系列专栏-【C】题目_謓泽的博客-CSDN博客🎓 ✉️我们并非登上我们所选择的舞台
謓泽
2022/12/12
5640
分支语句与循环语句(2)
do while循环中break和continue和在while循环中一模一样 break都是用于终止循环,continue是跳过本次循环后边的代码,直接去判断部分
用户10923087
2024/01/23
1640
分支语句与循环语句(2)
【指针的使用方式】
通过上述代码不难看出,left与right分别代表一个字符数组的首端和尾端,通过中间变量 tmp进行首尾交换,left++中的left是char*类型,同时也可以看成为一维数组left[ i++],因此,移动的原理就是通过++移向下一个元素位置所在的地址right同理可得是移向上一个元素位置所在的地址。
每天都要进步呀
2023/03/28
3350
【指针的使用方式】
今天发疯,写一下学校的数组作业
如果是对10个数字进行冒泡排序,那么需要进行9轮比较,每轮比较需要进行9+8+...+1次比较
用户11039545
2024/03/28
960
今天发疯,写一下学校的数组作业
经典例题(一)——经典例题的归纳总结。
这里,我们要先了解素数的定义,素数也叫质数 ,即在正整数中,除了1与本身之外没有其他约数的数(1除外)。 方法一: 也就是说,这个数只能被1和它本身整除。了解这一点后我们开始入手写代码,在这里我们最容易想到的方法就是试除法,即从2开始,不断地对那个数进行试除,假设这个数是n,直到试除到n(不包含n)为止,如果没有出现可以被整除的数,则n就是素数。
诺诺的包包
2023/02/17
5540
经典例题(一)——经典例题的归纳总结。
写题思路的分享
2.变量范围:输出1000~2000之间的闰年,则1000<=year<=2000;
用户10923087
2024/01/23
1680
【C语言】题集 of ⑧
🚩write in front🚩 🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家^星级博主~掘金⇿InfoQ创作者~周榜34»总榜2005🏅 🆔本文由 謓泽 原创 CSDN首发🙉如需转载还请通知⚠ 📝个人主页:打打酱油desuCSDN博客💬 📣系列专栏:【C】题目_謓泽的博客-CSDN博客[〇~①]🎓 ✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩  『
謓泽
2022/12/12
5650
【C语言】 题集 of ⑨
 🚩write in front🚩 ---- 🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家^星级博主~掘金⇿InfoQ创作者~周榜34»总榜1892🏅 🆔本文由 謓泽 原创 CSDN首发🙉如需转载还请通知⚠ 📝个人主页⇥打打酱油desuCSDN博客💬 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏⇥【C】题目_謓泽的博客-CSDN博客[〇~①]🎓 ✉️我们
謓泽
2022/12/12
1.1K0
【C语言】 题集 of ⑨
数据结构:七种排序及总结
有一种特殊情况要处理就是换的时候max在begin位置,因为先&arr[min], &arr[begin]换,所以要提前max=min.(此时最大值在min下标位置)
用户11290664
2024/11/21
1210
数据结构:七种排序及总结
力扣旋转字符串
题目链接:(来源于力扣)(右旋) 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1:
初阶牛
2023/03/08
3250
力扣旋转字符串
数组详解
注:数组创建,在C99标准之前, [] 中要给一个常量才可以,不能使用变量。在C99标准支持了变长数组的概念。
用户10923087
2024/01/23
1620
数组详解
今天发疯,写一下学校的函数作业
快到期末了,学校作业应该就是考试原题吧hhhh 抱个佛jio啥的,各位客官走过路过不要错过!
用户11039545
2024/03/28
1110
今天发疯,写一下学校的函数作业
指针进阶(2)
那要把函数的地址存到一个数组中,那这个数组就叫函数指针数组,那函数指针的数组如何定义呢?
用户10923087
2024/01/23
1050
指针进阶(2)
【C语言】题集 of ⑥
🚀write in front🚀    📝个人主页:打打酱油desu_泽En_CSDN博客 🆔本文由 泽En 原创 CSDN首发🐒 如需转载还请通知⚠ 🏅2021年度博客之星物联网与嵌入式开发TOP5→作者周榜56→总排名3255🏅  📣系列专栏:【C】题目_打打酱油desu-CSDN博客 💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🖊 ✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本 ♐  目录 🚀write in front🚀    ✨第二十六题→实现N的阶层
謓泽
2022/12/12
1.1K0
相关推荐
简单算法;冒泡排序和用指针交叉互换
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验