arphy 发表于 2006-2-27 13:28

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

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;
                                             }
                                       }
#include<stdio.h>
   main()
         { int i;
            int v={13,38,65,97,76,13,27,49,55,04};
             shellsort(int v,10);
               for (i=0;i<10;i++)
            printf("%d",v);
            getch();
                                       }
            编译时提示的错误如下: shells~1.c 16: 表达式语法错在 main 函数中

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

原帖由 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);
                         //形 ...
你这个调用传递过去的不是数组而数组中的元素.传递数组仅需数组名即可.实际上传过去的会是数组的首地址

hjack 发表于 2006-3-12 11:25

原帖由 arphy 于 2006-2-27 01:28 PM 发表
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;
                                             }
                                       }
#include<stdio.h>
   main()
         { int i;
            int v={13,38,65,97,76,13,27,49,55,04};
             shellsort(int v,10); //change to shellshort(v,n);
               for (i=0;i<10;i++)
            printf("%d",v);
            getch();
                                       }
            编译时提示的错误如下: shells~1.c 16: 表达式语法错在 main 函数中
还有你试试把#include<stdio.h>放到第一行。


原帖由 小标题 于 2006-2-28 02:48 PM 发表
main()
         { int i;
            int v={13,38,65,97,76,13,27,49,55,04};
             shellsort(int v,10); //把这句改为: shellsort(v,10);
                         //形参和实参

这样改,只是把数组元素传过去,如楼上所说。
传数组只要用数组名就行了。

needyou 发表于 2006-3-17 22:41

7楼的应该是正确的修改!!
页: [1]
查看完整版本: 关于shell排序,偶照着书写了一个程序,但运行不了,求高手帮忙