谭教授的错误程序: #include <stdio.h> #include <string.h> main() { void sort(); int i,n; char *p,num[20]; printf("input n:"); scanf("%d",&n); printf("please input these numbers:/n"); for(i=0;i<n;i++) scanf("%d",num+i); p=&num[0]; sort(p,n); printf("Now, the sequence is:/n"); for(i=0;i<n;i++) printf("%d ",num[i]); printf("/n"); } void sort(char p,int m)//字符型变量是不能直接与指针变量进行运算的,所以此处的p应改为*p或p[] { int i; char temp,*p1,*p2; for(i=0;i<m/2;i++) { p1=p+i; p2=p+(m-1-i); temp=*p1; *p1=*p2; *p2=temp; } } 修改后,正确代码如下: #include <stdio.h> #include <string.h> main() { void sort(); int i,n; char *p,num[20]; printf("input n:"); scanf("%d",&n); printf("please input these numbers:/n"); for(i=0;i<n;i++) scanf("%d",num+i); p=&num[0]; sort(p,n); printf("Now, the sequence is:/n"); for(i=0;i<n;i++) printf("%d ",num[i]); printf("/n"); } void sort(char p[],int m) { int i; char temp,*p1,*p2; for(i=0;i<m/2;i++) { p1=p+i; p2=p+(m-1-i); temp=*p1; *p1=*p2; *p2=temp; } }