| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1607 人关注过本帖
标题:对6个字符串由大到小排序,输出不对
取消只看楼主 加入收藏
B_soldier
Rank: 2
等 级:论坛游民
帖 子:38
专家分:41
注 册:2016-10-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
对6个字符串由大到小排序,输出不对
#include<stdio.h>                            //输入6个字符串,有小到大排序输出
#include<string.h>
int main(){
    int i, j, min;
    char s[6][80]={0}, str[80]={0};          //二维字符串数组存储
   
    printf("Enter 6 strings:\n");
    for(i=0; i<6; i++)
        gets(s[i]);                          //输入字符串,
   
    for(i=0; i<5; i++){
        min=i;         
        for(j=i+1; j<6; j++)                 //选择排序     
            if(strcmp(s[min],s[j])>0)
                min=j;
        if(i!=min){                          //交换字符串位置
            strcpy(str, s[i]);
            strcpy(s[i], s[j]);
            strcpy(s[j], str);
        }
    }
   
    for(i=0; i<6; i++)
        puts(s[i]);
        
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册

搜索更多相关主题的帖子: include 字符串 Enter 
2016-12-27 21:15
B_soldier
Rank: 2
等 级:论坛游民
帖 子:38
专家分:41
注 册:2016-10-20
收藏
得分:0 
回复 2楼 九转星河
我也觉得这个位置好像有点问题,是不是每次都要对str[]数组初始化一下啊,,,另外puts函数输出字符串不是遇到'\0'就结束了吗,为什么会输出这些乱码呢?
2016-12-27 21:38
B_soldier
Rank: 2
等 级:论坛游民
帖 子:38
专家分:41
注 册:2016-10-20
收藏
得分:0 
回复 5楼 wp231957
我那个选择排序算法是书上的,每次找到最小值然后跟第一个字符串交换一次,这样总共程序最多只交换五次,,,你这样写是每遇到小数组就交换一次,交换的次数要更多些,,,不过好像你这个程序就没问题了,我还挺纳闷的
2016-12-28 09:30
B_soldier
Rank: 2
等 级:论坛游民
帖 子:38
专家分:41
注 册:2016-10-20
收藏
得分:0 
回复 4楼 九转星河
不愧为版主对的,我要交换的是s[i]跟s[min]的位置,我给写成了交换是s[i]跟s[j],循环过后的j已经等于6,越界了才会出现乱码,懂了

        if(i!=min){                          //交换字符串位置
            strcpy(str, s[i]);
            strcpy(s[i], s[min]);
            strcpy(s[min], str);
        }
   
2016-12-28 09:45
快速回复:对6个字符串由大到小排序,输出不对
数据加载中...
 
   



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

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