一道简单的c语言习题,对n个数进行排序并输出,问题出在函数
#include <stdio.h>static void rank(int *p,int n);
int main()
{
int *p,n,i;
void(*q)(int*,int);//指向rank的指针
printf("please input n:");
scanf("%d",&n);
int str[n];
p=str;
printf("please input %d numbers:",n);
for(i=0;i<n;i++)
scanf("%d",p++);
for(i=0,p=str;i<n;i++)
printf("%d\t",*p++);
p=str;//p不要忘了复归原值
(*q)(p,n);
printf("after ranking the numbers are:");
for(i=0,p=str;i<n;i++)
printf("%d\t",*p++);
return 0;
}
static void rank(int*p,int n)
{
int i,k,*r,*temp=p,temp2;
for(k=n-2;k>=0;k--)//利用沉底法排序
for(i=0,p=temp,r=temp+1;i<=k;i++)
if(*p>*r)
{
temp2=*p;
*p=*r;
*r=temp2;
p++;
r++;
}
}
程序编译没有问题,但输入数据后系统提示.....exe停止运行,不知道问题在哪,求指点