C程序问题
我改写了一下书上的一个例子,编译时能通过,但得不到正确的结果,VC++调试,说下面有注释的循环错误,请高手指教
# include <stdio.h>
Void main()
{void inv(int *x,int n);
int I,arr[10],*p=arr;
printf(“The original array: \n”);
for(i=0;i<10;i++,p++)
scanf(“%d”,p);
printf(“\n”);
p=arr;
inv(p,10);
printf(“The array has been inverted:\n”);
p=arr;
for(i=0;i<10;i++,p++)
printf(“%d”,*p);/*错误!!*/
printf(“\n”);}
void inv(int *x,int n)
{int *p,m,temp,*i,*j;
m=(n-1)/2;
i=x;j=x+n-1;p=x+m;
for(;i<=p;i++,j--)
{temp=*i;*i=*j;*j=temp;}
Return;
}
参考答案:# include <stdio.h>
void main()
{void inv(int *x,int n);
int i,arr[10],*p=arr;
printf("The original array: \n");
for(i=0;i<10;i++,p++)
scanf("%d",p);
printf("\n");
p=arr;
inv(p,10);
printf("The array has been inverted:\n");
p=arr;
for(i=0;i<10;i++,p++)
printf("%d",*p);
printf("\n");
}
void inv(int *x,int n)
{int *p,m,temp,*i,*j;
m=(n-1)/2;
i=x;j=x+n-1;p=x+m;
for(;i<=p;i++,j--)
{temp=*i;*i=*j;*j=temp;}
return;
}
我调试了,没有什么大错误的,小的一些。建议:不要用汉字里的标点符号。
我用Microsoft Vc++调试的。有错的话 再回