题目:将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;
}
文章出处登录后可见!