c语言 将n个数按输入时顺序的逆序排列

#include<stdio.h>
void main()
{
void swap(int,int);
int a[100],i,j,n;
i=0;
n=0;

while((a[i]=getchar())!='\n')
n++;
a[i]='\0';

for(i=0;i<n/2;i++)
for(j=n;j>n/2;j--)
swap(a[i],a[j]);

printf("%d\n",a);
}

void swap(int *p1,int *p2)
{
int p;
p=*p1;
*p1=*p2;
*p2=p;
}
这样做错在哪了,为什么执行的时候报错
改下错的那块啊

第1个回答  2010-08-04
1. while循环中没有对i的处理,所以在交换之前数组a中没有任何值(因为a[i]='\0';此时i=0)

2. 数组小标从0开始应该是到n-1才对,所以交换时的第二层循环应该是从n-1开始

3.如果想逆序输出的话,直接从最大值向最小值循环就可以了,这样交换的话影像性能。
第2个回答  2010-08-04
哥们,你直接从数组最后输出就成了吧。干嘛要swap,swap。。。本回答被提问者采纳
第3个回答  2010-08-05
bncnvbc
第4个回答  2010-08-05
程序太多问题啊,i根本都没有自加的,一直是0
相似回答