鱼C论坛

 找回密码
 立即注册
查看: 3165|回复: 5

选择排序发

[复制链接]
发表于 2016-6-19 09:53:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <string.h>

int main()
{
        char a[50], b[40], str1[100], str2[100];
        char temp;
        int i, j, n, min;

        gets(a);
        printf("string a :%s\n", a);
        gets(b);
        printf("string b :%s\n", b);

        for(i=0; a[i]; i++)
        {
                str1[i] = a[i];
        }
        for(j = 0; b[j]; j++, i++)
        {
                str1[i] = b[j];
        }
        str1[i] = '\0';
        printf("原来的字符串:%s\n", str1);

        strcpy(str2, str1);
        strlwr(str2);
        n = strlen(str2);

        for(i = 0; i < n-1; i++)
        {
                min = i;
                for(j = i+1; j < n; j++)
                {
                        if(str2[min] > str2[j])
                        {
                                min = j;
                        }
                }
                if(i != min)
                {
                        temp = str1[min];
                        str1[min] = str1[i];
                        str1[i] = temp;
                }
        }

        printf("改变顺序后的字符串:%s\n", str1);
        return 0;

}


我先要输出的结果是AaBbCc按照这样的排序结果输出的,但是程序输出的结果跟我逾期的不一样,又找不出哪里有问题,求大神解答
7AC9.tmp.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-19 12:47:37 | 显示全部楼层
那是因为小写字母的ASCII码小,大写字母的ASCII码大
你只能自己定义一个数组,排序那个数组
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-19 12:54:33 | 显示全部楼层
本帖最后由 小剑剑 于 2016-6-19 12:56 编辑

比较是用的是str2,输出str1他str1交换了而str2没交换,后面的比较都错了
改成
if(I!=min)
{
   temp=str1[min];
   str1[min]=str[i];
   str1[I]=temp;
  temp=str2[min];
   str2[min]=str[i];
   str2[I]=temp;


}

还有这样子可能出现大小写排序不一致的情况例如排序成这样aaAAaa

评分

参与人数 2荣誉 +8 鱼币 +10 贡献 +5 收起 理由
~风介~ + 3 + 5 支持楼主!
n0noper + 5 + 5 + 5 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-6-19 13:39:33 From FishC Mobile | 显示全部楼层
你没看清楚吧,str2是把str1全部换成了小写了,不这样做的话,你的b肯定会在C后面的,str2我只是用来判断他的字母顺序用而已,我要改变的就是str1之后把改变后的输出出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-19 13:40:08 From FishC Mobile | 显示全部楼层
小剑剑 发表于 2016-6-19 12:54
比较是用的是str2,输出str1他str1交换了而str2没交换,后面的比较都错了
改成


你没看清楚吧,str2是把str1全部换成了小写了,不这样做的话,你的b肯定会在C后面的,str2我只是用来判断他的字母顺序用而已,我要改变的就是str1之后把改变后的输出出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-19 13:46:45 | 显示全部楼层
小剑剑 发表于 2016-6-19 12:54
比较是用的是str2,输出str1他str1交换了而str2没交换,后面的比较都错了
改成

我知道什么意思了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 04:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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