| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1411 人关注过本帖
标题:字符串排序输出
只看楼主 加入收藏
qq181982453
Rank: 2
等 级:论坛游民
帖 子:45
专家分:16
注 册:2010-6-10
结帖率:22.22%
收藏
 问题点数:0 回复次数:9 
字符串排序输出
字符串排序
#include<stdio.h>
#include<string.h>
void main()
{ char s[10][10];
    char *a[10];
    char *t;
  int i,j;

 
  printf("input 10 strings\n");
  for(i=0;i<10;i++)
 {gets(s[i]);
   a[i]=s[i];
 }
  for(j=0;j<10;j++)
  for(i=0;i<9-j;i++)
  { if(strcmp(s[i],s[i+1]))
    { t=a[i];
      a[i]=a[i+1];
      a[i+1]=t;
    }
   
  }
  for(i=0;i<10;i++)
   printf("%s\n",a[i]);
    }
为什么一行输10个数,输出会连的,一行输9个数,就不会。是不是串结字符的关系啊?
搜索更多相关主题的帖子: 字符 输出 
2010-07-14 23:50
vs_inzaghi
Rank: 5Rank: 5
来 自:湖北
等 级:职业侠客
威 望:1
帖 子:303
专家分:364
注 册:2009-8-17
收藏
得分:0 
你的问题我也在探讨……
不过我对你的排序方法有点怀疑
if(strcmp(s[i],s[i+1]))
这句话会不会是只要结果是0就判断为假,结果非0就是真啊?那么只要你进行比较的两个字符串不相等的话,那么结果都是非0,都为真,都会执行if后面的语句,好像这样比较不了大小啊……
不知楼下是否赞同?

我很懒,但我讨厌别人说我懒……
2010-07-15 01:30
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 2楼 vs_inzaghi
楼下赞同

我就是真命天子,顺我者生,逆我者死!
2010-07-15 08:41
ccmike98
Rank: 2
来 自:苏州
等 级:论坛游民
帖 子:76
专家分:56
注 册:2010-7-13
收藏
得分:0 
原型:extern int strcmp(const char *s1,const char * s2);
  用法:#include <string.h>
  功能:比较字符串s1和s2。
  说明:
  当s1<s2时,返回值<0
  当s1=s2时,返回值=0
  当s1>s2时,返回值>0
  即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
  "A"<"B" "a">"A" "computer">"compare"
  特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数。
2010-07-15 11:22
ccmike98
Rank: 2
来 自:苏州
等 级:论坛游民
帖 子:76
专家分:56
注 册:2010-7-13
收藏
得分:0 
我也不懂   顶你
一起等高手
2010-07-15 11:41
ymqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:141
专家分:143
注 册:2010-7-14
收藏
得分:0 
抱歉,不理解你的问题。
2010-07-15 11:52
ccmike98
Rank: 2
来 自:苏州
等 级:论坛游民
帖 子:76
专家分:56
注 册:2010-7-13
收藏
得分:0 
好像是定义的字符串空间问题
改成这样
    char s[10][11];
    char *a[11];
就没问题了



但不知道为什么
2010-07-15 12:23
无雨无星
Rank: 2
等 级:论坛游民
帖 子:28
专家分:37
注 册:2010-6-23
收藏
得分:0 
真正要从字面上比较两个字符串可用标准库函数strcmp()进行。
 
 标准库函数strcmp(),在头文件string.h中,函数原型如下: 
 int strcmp(const char* s1,const char* s2);
 函数值如下:
  0              s1值等于s2值 
  正值        s1值大于s2值 
  负值        s1值小于s2值
strcmp()的格式就是以指针的形式!!!

2010-07-15 12:37
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
我的理解:

1,你的排序方法不对,赞同 2 楼;

2,关于你所说的输出问题,因为字符串后面是要有换行符的,你一行输入 10 个,把换行符给吃没了.
2010-07-15 13:06
honesty2008
Rank: 2
等 级:论坛游民
帖 子:8
专家分:25
注 册:2010-7-29
收藏
得分:0 
字符串排序,调用一下sort函数就行了。
只需加头文件#include<algorithm>
using namespace std;

敢于面对现实,勇于战胜自己。
2010-07-30 14:55
快速回复:字符串排序输出
数据加载中...
 
   



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

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