用C语言实现数组中的数据逆序输出

#include <stdio.h>
#define SIZE 14
main()
{
int a[SIZE],i,j,t;
for(i=0;i<SIZE;i++)
scanf("%d",&a[i]);
i=0,j=14;
while(i<j)
{
t=a[i];a[i]=a[13-i];a[13-i]=t;
i++;
}
for(i=0;i<SIZE;i++)
printf("%3d",a[i]);
printf("\n");
}

我想问下到底哪里错了,我运行的时候,最后都是按原样输出的。。。。。。

可以将这个功能封装为一个函数。

传入数组首地址,以及数组长度。

以循环方式,对数组逆序遍历即可。

代码:

void revers_print(int *a, int l)
{
    int i;
    for( i = l-1; i >=0; i -- )
        printf("%d,",a[i]);
        
    return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-06
i 在递增的同时 j也要递减 在循环的代码块中加一个 j--即可
第2个回答  2013-01-06
因为你进行了两次调换,在你的while循环里,当i < 7 时 , 你把a[ 0 ] 和a[ 13 ] 调换了,a[1 ] 和
a[ 12 ] 调换了,一直到a[ 6 ] 和 a[ 8 ]掉换了,然后当 i > 7 是, 又进行了一次互换,原来换好了,又被你给换回来了,当然是原样输出了...
第3个回答  2013-01-06
大哥,你换了两次啊,i=0的时候a[0]和a[13]交换,到i=13的时候a[13]再和a[0]交换,那不是边回来了么来自:求助得到的回答
第3个回答  2013-01-06
当i大于7时不是又换回去了么,让j=7试试看。
另外,没必要这么写,直接for(i=13;i>=0;i--)printf("%4d",a[i]);就可以了
相似回答