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

c语言一维数组(数组倒置的多种方法)将一维数组 a 的值取出后存入按照相反的顺序的另外一个维数组 b 中 再将 b 值正序换到 a 中 输出 a 即可

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

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

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

(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<n;i++){ scanf("%d",&a[i]); } //1.将a[n]中的值逆序输入b[n]中 for(i=0;i<=n-1;i++){ b[i]=a[n-1-i]; } //2.将b[n]的值正序存入a[n]中 for(i=0;i<=n-1;i++){ a[i]=b[i]; } printf("倒置后数组中的素为:\n"); //3.循环输出a[n]值为倒置后的数组a[n] for(i=0;i<n;i++){ printf("%d ",a[i]); } return 0; }

方法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<n;i++){ scanf("%d",&a[i]); } int temp;//定义中间变量temp //功能函数:交换n/2次,每次都把头尾素交换 for(i=0;i<=n/2-1;i++){ temp=a[i]; a[i]=a[n-1-i]; a[n-1-i]=temp; } printf("素倒置后:\n"); //素输出 for(i=0;i<n;i++){ printf("%d ",a[i]); } return 0; } 

  方法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<j){

  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<n;i++){ scanf("%d",&a[i]); } int j,temp;//定义中间变量temp i=0;//i表示首素下标 j=n-1;//j表示末尾素下标 //功能函数:交换n/2次,每次都把头尾素交换 while(i<j){ temp=a[i]; a[i]=a[j]; a[j]=temp; i++; j--; } printf("素倒置后:\n"); //素输出 for(i=0;i<n;i++){ printf("%d ",a[i]); } return 0; } 

今天的文章 c语言一维数组(数组倒置的多种方法)分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-30 19:01
下一篇 2024-12-30 18:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/91997.html