int search1(int k[],int n,int key)
 {
   int i;
   for(i=0;key!=k[i];i++);
   if(i<n&&k[i]==key)
   return i;
   return -1;
 }
int d[]={0};
main()
{  int a,b,c,n=0,r,i,e,j;
    printf("input the number");
 for(a=0;;a++)
    {
    scanf("%d",&b);
    d[a]=b;
    n++;
    if(b==1000)
    break;
    }
    for(i=0;i<n;i++)
    {
      for(j=i+1;j<n;j++)
       {
           if(d[i]>d[j])
          {
           e=d[i];
           d[i]=d[j];
           d[j]=e;
           }
       }
     }
    printf("input a key");
    scanf("%d",&c);
    r=search1(d,n,c);
    printf("%d",r);
}

解决方案 »

  1.   

    这里的int d[]={0}定义的是不是数组的长度不确定,可由下面的输入来确定呢|?找了几本书,都没找到,问老师,他们也说C语言没这种定义方法.但为什么在WIN-TC和TC2.0都能编译得过去呢?而且结果也是正确滴.正在郁闷当中.
      

  2.   

    int d[]={0} 与int d[1]={0} 是一样的,长度都是一 
    数组的长度肯定是定值,否则就乱套了
      

  3.   

    楼主一个函数里面怎么会有两条return语句呢?
      

  4.   

    是定值的话,那长度代表多少呢???如果跟d[1]={0}一样的话,说明他的长度只有1,里面元素也应该只有一个才对.那为什么后面还可以给数组赋值呢  for(a=0;;a++)
        {
        scanf("%d",&b);
        d[a]=b;
        n++;
    ??增加了数组的元素个数|??
      

  5.   

    呵呵.因为调用函数.只要有一个返回值i的传递给主函数的话,则下面的return -1则不会再运行了.如果返回值不是 i,则返回的是-1
    跟if ....
     else....一样.