黯然销魂 发表于 2006-2-27 14:08

关于shell排序,偶照着书写了一个程序,但运行不了,求高手帮忙

原帖由 arphy 于 2006-2-27 13:28 发表
#include<stdio.h>
void shellsort(int v[],int n)
{
int gap,i,j,temp;
for(gap=n/2;gap>0;gap/=2)
for(i=gap;i<n;i++)
for(j=i-gap;j>=0&&v>v;j-=gap)
   { temp=v;
   v=v;
   v=temp;
    }
}
main()
         { int i;
            int v={13,38,65,97,76,13,27,49,55,04};
             shellsort(int v,10);/*应是shellshort(v,10);吧?*/
               for (i=0;i<10;i++)
            printf("%d",v);
            getch();                                       
}

arphy 发表于 2006-2-27 16:53

编译时也提示是那一句有问题,不过刚刚按楼上说的改了一下程序,还是提示shellsort(int v[],10);有问题。楼上的确信已经编译通过了吗?

黯然销魂 发表于 2006-2-27 16:58

是shellsort(v,10);
楼主请复习一下函数调用,区分一下形参和实参...

小标题 发表于 2006-2-28 14:48

main()
         { int i;
            int v={13,38,65,97,76,13,27,49,55,04};
             shellsort(int v,10); //把这句改为: shellsort(v,10);
                         //形参和实参

黯然销魂 发表于 2006-2-28 15:11

原帖由 小标题 于 2006-2-28 14:48 发表
main()
         { int i;
            int v={13,38,65,97,76,13,27,49,55,04};
             shellsort(int v,10); //把这句改为: shellsort(v,10);
                         //形 ...
你这个调用传递过去的不是数组而数组中的元素.传递数组仅需数组名即可.实际上传过去的会是数组的首地址
页: [1]
查看完整版本: 关于shell排序,偶照着书写了一个程序,但运行不了,求高手帮忙