| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 778 人关注过本帖
标题:字符串排序问题
只看楼主 加入收藏
万仁全
Rank: 1
等 级:新手上路
帖 子:23
专家分:1
注 册:2011-8-31
结帖率:100%
收藏
 问题点数:0 回复次数:10 
字符串排序问题
程序代码:
/*************************
    编写程序,输入若干个字符串,以***为结束标志,并且在输出时按照英语字典的书序输出
********************************/

#include"stdio.h"
#include"string.h"
#define COL 20
#define ROW 80

int readin(char str[][ROW])            //读入
{
    int i=0;
    printf("请输入第一个字符串:");
    gets(str[i]);
    while(strcmp(str[i],"***")!=0)
    {
        i++;
        printf("想要结束输入,请输入***:");
        gets(str[i]);
    }
    return i;


}

void writeout(char str[][ROW],int size)    //输出所有的字符串
{
    int i;
    for(i=0;i<size;i++)
       puts(str[i]);

}

void sort(char str[][ROW],int size)
{
    int i,j,min;
    char temp[ROW];
    for(i=0;i<size;i++)
    {
        min=i;
        for(j=i+1;j<size;j++)
        {
            if(strcmp(str[j],str[min])<0)
            {
                min=j;
                strcpy(temp,str[min]);
                strcpy(str[min],str[j]);
                strcpy(str[j],temp);
            }
        }
   
    }


}

void main()
{
    char str[COL][ROW];
    int n;
    n=readin(str);
    printf("排序前:");
    writeout(str,n);
    sort(str,n);
    printf("排序后:");
    writeout(str,n);

}
排序函数有点问题,输入几个字符串,但是无法排序,还是原样输出,请问下哪里有问题?谢谢!!
搜索更多相关主题的帖子: 编写程序 英语字典 字符串 color 
2011-09-15 10:48
其实、不想说
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:156
注 册:2011-3-3
收藏
得分:0 
void sort(char str[][ROW],int size)
{
    int i,j,min;
    char temp[ROW];
    for(i=0;i<size;i++)
    {
        min=i;
        for(j=i+1;j<size;j++)
        {
            if(strcmp(str[j],str[min])<0)
            {
                min=j;

            }
            strcpy(temp,str[min]);
                strcpy(str[min],str[j]);
                strcpy(str[j],temp);
        }
   
    }


}
2011-09-15 12:12
其实、不想说
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:156
注 册:2011-3-3
收藏
得分:0 
你用的是选择排序,别把冒泡混淆
2011-09-15 12:12
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
回复 楼主 万仁全
strcpy(temp,str[min]);
 strcpy(str[min],str[j]);
   strcpy(str[j],temp);   原型声明:extern char *strcpy(char *dest,char *src);  
 头文件:string.h
  功能:把src所指由NULL结束的字符串复制到dest所指的数组中。  
 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。   返回指向dest的指针。
兄弟这是不是变量,是数组

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-15 12:15
其实、不想说
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:156
注 册:2011-3-3
收藏
得分:0 
void sort(char str[][ROW],int size)
{
    int i,j,min;
    char temp[ROW];
    for(i=0;i<size;i++)
    {
        min=i;
        for(j=i+1;j<size;j++)
        {
            if(strcmp(str[j],str[min])<0)
            {
                min=j;
            }
        }
        strcpy(temp,str[min]);
        strcpy(str[min],str[j]);
        strcpy(str[j],temp);
    }


}
不好意思,改错了,这个应该没问题
2011-09-15 12:15
其实、不想说
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:156
注 册:2011-3-3
收藏
得分:0 
应该是
strcpy(temp,str[min]);
strcpy(str[min],str[i]);
strcpy(str[i],temp);
2011-09-15 12:18
其实、不想说
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:156
注 册:2011-3-3
收藏
得分:0 
void sort(char str[][ROW],int size)
{
    int i,j,min;
    char temp[ROW];
    for(i=0;i<size;i++)
    {
        min=i;
        for(j=i+1;j<size;j++)
        {
            if(strcmp(str[j],str[min])<0)
            {
                min=j;

            }
        }
        strcpy(temp,str[min]);
        strcpy(str[min],str[i]);
        strcpy(str[i],temp);

   
    }


}
貌似其它的都没问题,就是这个sort()函数
2011-09-15 12:22
其实、不想说
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:156
注 册:2011-3-3
收藏
得分:0 
那个temp就是数组变量char temp【row】;
就按我改得试下,我运行了,能排序
2011-09-15 12:23
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
回复 7楼 其实、不想说
你代码能,正确输出?

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-15 12:37
万仁全
Rank: 1
等 级:新手上路
帖 子:23
专家分:1
注 册:2011-8-31
收藏
得分:0 
谢谢两位了,我用冒泡法改过来了,因为我的str[][ROW]是二维数组,所以str[min]是指针,不是数组。多谢了!!
2011-09-15 15:03
快速回复:字符串排序问题
数据加载中...
 
   



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

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