【03】逆序数组

简介: 【03】逆序数组

💥一、逆序函数是什么?

示例:输入1 4 7 9 3

输出:3 9 7 4 1

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

 

✨二、逆序函数原码

🥳1.直接逆序

 

思路:

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

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

图示如下:

#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或者其他

修改后代码如下:

#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.创建临时数组逆序

 

思路:

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

 

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

相关文章
|
12月前
|
数据采集 数据可视化 数据挖掘
Pandas数据应用:天气数据分析
本文介绍如何使用 Pandas 进行天气数据分析。Pandas 是一个强大的 Python 数据处理库,适合处理表格型数据。文章涵盖加载天气数据、处理缺失值、转换数据类型、时间序列分析(如滚动平均和重采样)等内容,并解决常见报错如 SettingWithCopyWarning、KeyError 和 TypeError。通过这些方法,帮助用户更好地进行气候趋势预测和决策。
363 71
|
9月前
|
缓存 JavaScript
WordPress内容付费插件
这是一款内容付费插件,可隐藏文章部分内容或分类下的所有文章,用户需付费查看。支持沙箱测试、两种加签模式、静态缓存网站使用、游客购买等功能。使用时将内容放入 `[pay price=&quot;9.9&quot;]` 和 `[/pay]` 简码中即可。需确保网站支持支付宝订单码支付功能。提供免费样式调整服务,适合需要内容变现的网站。
125 0
|
10月前
|
人工智能
第二批拟立项名单|2024年阿里云协同育人项目立项通知
第二批拟立项名单|2024年阿里云协同育人项目立项通知
|
存储 缓存 移动开发
【C语言基础篇】scanf()函数详解
【C语言基础篇】scanf()函数详解
|
存储 Kubernetes Cloud Native
云原生|kubernetes|centos7下离线化部署kubesphere-3.3.2---基于kubernetes-1.22.16(从网络插件开始记录)
云原生|kubernetes|centos7下离线化部署kubesphere-3.3.2---基于kubernetes-1.22.16(从网络插件开始记录)
490 0
|
人工智能 自然语言处理 安全
AIGC时代,阿里云如何让短剧出海更便捷?
短剧高温下,谈谈AIGC的助攻路线。
42550 0
AIGC时代,阿里云如何让短剧出海更便捷?
|
调度 数据中心 网络架构
PON系统“被动光网络”
PON(Passive Optical Network)是一种光纤接入网架构,由光线路终端(OLT)、光分配网络(ODN)和光网络单元(ONU)组成。OLT位于中心办公室,管理并调度数据传输;ODN是连接OLT和ONU的光纤网络,通过光分配器被动分发信号;ONU位于用户端,接收和转发数据,维护与OLT的同步。
640 2
|
C语言
C语言字符串、宏定义及主函数介绍
C语言字符串、宏定义及主函数介绍
533 0
|
前端开发 JavaScript 测试技术
Vue3+Vite+TypeScript常用项目模块详解(下)
现在无论gitee还是github,越来越多的前端开源项目采用Vue3+Vite+TypeScript+Pinia+Elementplus+axios+Sass(css预编译语言等),其中还有各种项目配置比如eslint 校验代码工具配置等等,而我们想要进行前端项目的二次开发,就必须了解会使用这些东西,所以作者写了这篇文章进行简单的介绍。
323 0
|
缓存 NoSQL 中间件
太卷了!京东、微博最新「Redis缓存高手心法手册」竟被开源了
众所周知,分布式架构被广泛应用于企业级应用开发中,以满足高并发、高可用、高性能、高扩展性等要求。 像电商平台秒杀、平台抢票等高并发场景,数据访问量激增,容易造成服务器负载过重从而导致崩溃。因此,分布式缓存作为分布式架构的重要组件,当一个缓存服务节点挂掉,可以马上切换到另外的缓存服务节点,以保证系统能正常运行。
280 0