C语言如何实现数组元素倒置??

int a [5] = {1,3,4,6,2}

如何实现数组倒置??

1、打开c语言编辑器,新建一个空白的文件:

2、这里可以开始写代码了,主函数的前面定义了数组和一些变量,倒置操作在for循环中完成,这里只需要第一个元素和最后一个元素交换、第二个元素和倒数第二个元素交换、以此类推……不管数组元素的个数是奇数还是偶数,这个算法都是成立的,最后则是打印输出结果:

3、最后程序编写完成需要验证一下结果,按下crtl+F5运行程序,弹出的窗口中就能看见逆序输出的数组元素了:

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-02

方法有很多。最简单不考虑倒置后存储,只求打印效果,直接迭代for(i=4;i<=0;i--)printf("%d",a[i]);从后往前取直接打印就行。这个我就不详细写了。

我写一个指针的方法。你参考吧。

思路是定义两个指针,分别指向数组的首地址和尾地址,然后两个指针同时向中间移动直到相遇,同时每次移动将两指针指向地址的值进行交换,程序执行到最后a数组里存储的值就发生颠倒了。

#include <stdio.h>
int main()
{
    int len,*p0,*p1,n;
    int a[5]={1,3,4,6,2};
    len=5;
    p0=&a[0];
    p1=&a[len-1];
    while(1)
    {
        n=*p1;
        *p1=*p0;
        *p0=n;
        p0++;p1--;
        if(p1<=p0)
            break;
    }

    printf("倒置后的数组:%d,%d,%d,%d,%d\n",a[0],a[1],a[2],a[3],a[4]);
    return 0;
}

本回答被网友采纳
第2个回答  2013-02-15
#include <stdio.h>
int main()
{
int a[5]={1,3,4,6,2} ;
int i,a_size=5 ;
//折半法,交换前后的数
for(i=0;i < a_size/2 ; i++ )
{
//交换对应位上的数
int temp=a[i];
a[i]=a[a_size-i-1];
a[a_size-i-1]=temp;
}
for(i=0;i < a_size ; i++ )
printf("%d " , a[i] );
printf("\n");
system("pause");
return 0;
}本回答被网友采纳
第3个回答  2013-02-15
#include "stdio.h"

void main()
{
int a[5]={1,2,3,4,5};
int i;

for(i=0;i<5;++i)
{
ungetc(a[i],stdin); //把数组元素返回stdin中
}

for(i=0;i<5;++i)
{
a[i]=getchar(); //重新读取
}

for(i=0;i<5;++i)
{
printf("%d",a[i]); //输出结果
}

}
第4个回答  2013-02-16
就这个数组来说,给你简单的编了一个程序。基本没用什么算法。
#include<stdio.h>
void main()
{
int n;
n=a[0];
a[0]=a[4];
a[4]=n;
n=a[1];
a[1]=a[3];
a[3]=n;
}
相似回答