| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1465 人关注过本帖
标题:在比较多个字符串并排序时, 字符串等长和不等长情况有什么区别?
取消只看楼主 加入收藏
colinxt
Rank: 2
等 级:论坛游民
帖 子:34
专家分:10
注 册:2010-4-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
在比较多个字符串并排序时, 字符串等长和不等长情况有什么区别?
这个是谭浩强的习题,写了两个程序,可惜看不懂
等长时:
程序代码:
#include <stdio.h>
#include <string.h>
void sort(char s[5][6])
{

 int i,j;

 char *p,t[10];

 p=t;

 for (i=0;i<4;i++)

 {
  for (j=0;j<4-i;j++)
  {
   if (strcmp(s[j],s[j+1])>0)
   {
    strcpy(p,s[j]);
    strcpy(s[j],s[j+1]);
    strcpy(s[j+1],p);
   }
  }

 }
}
int main(int argc, char *argv[])
{

 int i;

 char str[5][6];

 printf("enter 10strings:\n");

 for (i=0;i<5;i++)

 {
  scanf("%s",str[i]);

 }

 sort(str);

 printf("now:\n");

 for (i=0;i<5;i++)

 {
  printf("%s\n",str[i]);

 }

 return 0;
}

不等长时:
程序代码:
#include <stdio.h>
#include <string.h>
void sort(char *p[])
{

 int i,j;

 char *t;

 for (i=0;i<4;i++)

 {
  for (j=0;j<4-i;j++)
  {
   if (strcmp(*(p+j),*(p+j+1))>0)
   {
    t=*(p+j);
    *(p+j)=*(p+j+1);
    *(p+j+1)=t;
   }
  }

 }
}
int main(int argc, char *argv[])
{

 int i;

 char *p[5],str[5][20];

 for (i=0;i<5;i++)

 {
  p[i]=str[i];

 }

 printf("enter 10strings:\n");

 for (i=0;i<5;i++)

 {
  scanf("%s",p[i]);

 }

 sort(p);

 printf("now:\n");

 for (i=0;i<5;i++)

 {
  printf("%s\n",p[i]);

 }

 return 0;
}

想知道分别处理等长和不等长的原理是什么?
谢谢!
搜索更多相关主题的帖子: 字符 
2010-04-27 16:49
colinxt
Rank: 2
等 级:论坛游民
帖 子:34
专家分:10
注 册:2010-4-5
收藏
得分:0 
回复 2楼 广陵绝唱
哦..有道理..不过这是字符串比较的原理
可能是我没描述清楚...比较想知道的是以上两段代码相比, 不等长的情况使用了指针数组,  为什么这样用就可以处理不等长字符串?
2010-04-28 10:02
快速回复:在比较多个字符串并排序时, 字符串等长和不等长情况有什么区别?
数据加载中...
 
   



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

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