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

相关文章
|
6月前
|
存储
数组的初识
数组的初识
|
6月前
|
存储 算法 C++
c++数组详细介绍(二)
c++数组详细介绍(二)
105 0
|
2月前
|
存储 算法 编译器
C 数组详解
在C语言中,数组是一种用于存储多个同类型数据的集合。本文介绍了数组的基本特性与使用方法,包括定义与初始化、索引访问、多维数组、指针操作、大小计算及函数传递等内容。数组名可视为指向首元素的指针,支持遍历、排序与查找等常见操作。数组大小固定,访问越界会导致未定义行为。此外,还可以将数组嵌套在结构体中以增加数据复杂性。
55 10
|
5月前
数组(3)
数组(3)
34 2
|
存储 C语言 索引
C 数组
C 数组。
38 0
|
机器学习/深度学习 Java
【数组的使用】
【数组的使用】
45 0
|
存储 算法 开发者
数组
一、数组 数组是一种线性结构,它由一组连续的内存单元组成,用于存储相同类型的数据元素。数组的特点包括: 1. 顺序存储:数组中的元素按照一定的顺序存储在连续的内存空间中。每个元素占据一个固定的位置,可以通过索引来访问。 2. 索引访问:数组中的元素可以通过索引来访问,索引从0开始,依次递增。通过索引,可以快速定位和访问数组中的元素。 3. 相同类型:数组中的元素必须是相同类型的数据,例如整数、浮点数、字符等。这是因为数组需要在内存中分配一块连续的空间来存储元素,而不同类型的数据可能占据不同大小的内存空间。 4. 固定大小:数组的大小在创建时就确定,并且不能动态改变。一旦创建了一个数组,它的大小
55 0
数组相关练习
数组相关练习
53 0
|
存储 编译器 C语言
C语言知识点之 数组
C语言知识点之 数组
84 0
|
存储 算法 编译器
数组(一)
数组(一)
113 0
数组(一)