LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1049|回复: 5

帮帮我这个菜鸟!

[复制链接]
发表于 2002-11-21 21:41:04 | 显示全部楼层 |阅读模式
#include <stdio.h>

int main()
{  //int sort(int *x,int n);
   int *p,i,a[10];
   p = a;
   for(i=0;i<10;i++,p++)
      scanf("%d",p);
   sort(p,10);
   for(p=a,i=0;i<10;i++)
   {
      printf("%d ",*p);
      p++;
   }
   printf("\n");

   return 0;
}

/*int*/ sort(int *x,int n)
{  int i,j,k,t;
   for(i=0;i<n-1;i++)
   {
     k=i;
     for(j=i+1;j<n;j++)
        if(*(x+j)>*(x+k))k=j;
     if(k != i)
     {
       t = *(x+k); *(x+k) = *(x+i); *(x+i) = t;
     }
   }
//  return 1;
}


我不知道怎么错了!
我没有用指针的程序,没有错,改用指针就说 什么 Seganmiton default

Seganmition ,这个单词我不是很记得!
发表于 2002-11-22 11:56:15 | 显示全部楼层
哈哈~~!版主有段时间没有露面,想来应该是闭关修练去了。练成了什么绝杀秘技可别藏着呀,拿出来给弟兄们看看。

此外,这个程序我研究一下,有结果我会尽快贴上来。
发表于 2002-11-22 12:42:27 | 显示全部楼层
我看你这个程序的意思是输入10个数,然后再按照从大到小的顺序输出。
问题出现在这几句:
for(i=0;i<10;i++,p++)
scanf("%d",p);
sort(p,10);
循环结束后,p指针已经超出了数组的地址范围。所以在执行sort(p,10)时传递给sort的p指针实际上指向无效地址。应该改成这样:
for(i=0;i<10;i++,p++)
scanf("%d",p);
p=a;
sort(p,10);
发表于 2002-11-22 14:19:09 | 显示全部楼层

re:kj501兄

我看懂了,谢谢kj501兄。

以后kj501兄弟还要多来这里帮帮我们这些学子啊。
发表于 2002-11-22 15:11:56 | 显示全部楼层
re:flavor
其实我也水平不高,真正搞linux程序设计也就一个月时间。但我很愿意帮助大家。
发表于 2002-11-22 16:14:37 | 显示全部楼层

re:kj501

kj501兄,你太谦虚了。
只要经常来这个版块的人,对于你的水平毫不怀疑。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表