题目:将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语言一维数组(数组倒置的多种方法)分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/91997.html