| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 342 人关注过本帖
标题:这个选择排序错哪了
只看楼主 加入收藏
doing8
Rank: 1
等 级:新手上路
帖 子:20
专家分:3
注 册:2012-6-15
结帖率:50%
收藏
 问题点数:0 回复次数:1 
这个选择排序错哪了
运行的结果 老是第2个 没有交换。。。

#include<stdio.h>
#include<string.h>
void sort(char **p)
{
      int i,j,k;
      char *t;
      for(i=0;i<4;i++)
      {
          k=i;
          for(j=i+1;j<5;j++)
          {
              if(strcmp(*(p+k),*(p+j))>0)
              {
                  k=j;
              }
              if(k!=i)
              {
                   t=*(p+k);
                   *(p+k)=*(p+i);
                   *(p+i)=t;
              }
          }
      }      
}
void main()
{
    char *str[5]={"acc","a","abc","bbz","bbs"};
    char **p;
    int i;
    p=str;
    sort(p);
    for(i=0;i<5;i++)
    {
        p=str+i;
        printf("%s\n",*p);

    }

}
搜索更多相关主题的帖子: void 交换 include 
2012-06-17 17:20
wwc386646959
Rank: 2
等 级:论坛游民
帖 子:29
专家分:82
注 册:2012-6-16
收藏
得分:0 
strcmp函数是将字符串的字符逐个比较,这样就会出现一种现象,就是短的字符串在strcmp函数比较中可能会比长的字符串大。所以,在用这个函数的时候,还有考虑一下字符串的长度是否相等的问题。库函数很多时候都不够用的,还是自己写吧
2012-06-17 17:36
快速回复:这个选择排序错哪了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015559 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved