师兄,你就从了我吧!:将一个数组中的元素逆序?

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 09:29:40
将一个数组中的元素逆序,就是将第1个元素和最后1个元素交换,第2个数与倒数第2个元素交换……?
#include<stdio.h>
void main()
{
int a[5],i,b=0,j;
for(i=0;i<5;i++)
{scanf("%d",&a[i]);}
printf("%d\n",a[i]);
for(i=0,j=4;i<5&&j>=0;i++,j--)
{ b=a[j];
a[j]=a[i];
a[i]=b;}
printf("%d",a[i]);
}
这是我做的怎么会有乱码?迷糊

我照楼主的程序运行了一下没有出现乱码啊,
可能是编译器的问题吧,我用的是WinTC。
不过照楼主的程序显然不能实现逆序输出的。
因为for(i=0,j=4;i<5&&j>=0;i++,j--)
{ b=a[j];
a[j]=a[i];
a[i]=b;} 这个语句显然把数组逆序了再逆序,
负负得正,结果等于没变,正确的做法应该是
for(i=0,j=4;i<2&&j>=0;i++,j--)
{ b=a[j];
a[j]=a[i];
a[i]=b;}

haha,
你是一个很有趣的同学啊,
你说怎么是乱的呢?
首先,第一次的时候,是第一个元素和第五个元素交换。
当 i=0时, a[0]与a[5]交换。
最后一次呢?
当 i=4时,a[5]和a[0]交换。
不就换回去了啊。
正确的是就由一个下标来控制交换:
for(i=0;i<3;i++)
{ b=a[4-i];
a[4-i]=a[i];
a[i]=b;}

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

#include<stdio.h>
void main()
{
int j,i,m,a[100],n;
printf("输入数组的元素的个数(0<n<100):");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0,m=n-1;i<n/2;i++,m--)
{
j=a[i];
a[i]=a[m];
a[m]=j;
}
for(i=0;i<n;i++)
printf("%4d",a[i]);

}

运行通过..看看这个吧...给个参考..