c语言一维数组(数组倒置的多种方法)

题目:将n个元素的数组的值前后倒置

方法1:借助另外一个数组b,将一维数组a的值取出后存入按照相反的顺序的另外一个维数组b中,再将b值正序换到a中,输出a即可。

(1)编程思想:建立数组存储当前要倒置的你个元素,再建立一个数组b,将a中数据反序存储到数组b中,在将数组b的值正序传回数组a中即可实现数组a的倒序。

c语言一维数组(数组倒置的多种方法)_第1张图片

(2)代码实现:

【1】将a中数据反序存储到数组b中(n为元素个数)

b[0]=a[n-1];

b[1]=a[n-2];

b[3]=a[n-3];

..................

可以归纳为:

for(i=0;i<=n-1;i++){

  b[i]=a[n-i-1];//数组下标是从0开始的

}

【2】将数组b的值正序传回数组a

for(i=0;i<=n-1;i++){

  a[i]=b[i];

}

(4)全部代码:

#include"stdio.h"
int main(){
	int i,n;
	printf("请输入元素总个数n:\n");
	scanf("%d",&n);
	int a[n],b[n];//定义两个一维变长数组
	printf("请输入a[%d]中的元素:\n",n);
    //循环输入a[n]的值 
	for(i=0;i

方法2:引入中间变量temp,依次将首a[0]尾a[n-1]两个元素的值互相交换,有n个元素,共换[n/2]次。

(1)算法思想:借助中间变量temp,实现数组中对应元素的互换。

依次将a[0]和a[n-1]

           a[1]和a[n-2]

           a[2]和a[n-3]

           ...................

也就是将a[i]和a[n-1-i]互相交换,直至完成[n/2]次互换。

//n/2次互换

for(i=0;i<=n/2-1;i++){

    temp=a[i];

    a[i]=a[n-1-i];

    a[n-1-i]=temp;

}

(2)全部代码:

#include"stdio.h"
int main(){
  int n,i;
  printf("请输入总元素个数n:\n");
  scanf("%d",&n);
  int a[n];//定义变长数组a[n]
  printf("请输入a[%d]中的元素:\n",n);
  //元素输入
  for(i=0;i

  方法3:利用两个变量(i和j)分别代表左右两侧互换的数组下标值。

(1)算法思想:和方法2类似,不过是用i代表首元素,j代表末元素,将i++,将j--。

依次将a[0]和a[n-1]

           a[1]和a[n-2]

           a[2]和a[n-3]

           ...................

也就是将a[i]和a[n-1-i]互相交换,直至完成[n/2]次互换。

令i=0(代表首元素下标),j=n-1代表末尾元素下标

int i,j,temp;

i=0;

j=n-1;

//循环条件是首元素小于末元素下标,如果等于就没必要换了

while(i

  temp=a[i];

  a[i]=a[j];

  a[j]=a[i];

  i++;

  j--;

}

(2)全部代码:

#include"stdio.h"
int main(){
  int n,i;
  printf("请输入总元素个数n:\n");
  scanf("%d",&n);
  int a[n];//定义变长数组a[n]
  printf("请输入a[%d]中的元素:\n",n);
  //元素输入
  for(i=0;i

你可能感兴趣的:(c语言,算法,数据结构)