| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 561 人关注过本帖
标题:一个字符串排序的问题
只看楼主 加入收藏
文武两边随
Rank: 2
等 级:论坛游民
帖 子:40
专家分:39
注 册:2009-7-23
结帖率:90.91%
收藏
已结贴  问题点数:20 回复次数:2 
一个字符串排序的问题
include"stdio.h"
void fun(char *s)
{
 int i,j=0,k=0;
 char t1[80],t2[80];
 for(i=0;s[i]!='\0';i++)
  if(s[i]>='0'&&s[i]<='9')
    t2[j++]=s[i];
  else
    t1[k++]=s[i];

 t2[j]=0;
 t1[k]=0;
 for(i=0;i<k;i++)
 s[i]=t1[i];
 for(i=0;i<j;i++)
 s[k+i]=t2[i];


}
main()
{
 char s[80]="ba3a54jjsd567sdfffs";
 printf("\nThe original string is: %s\n",s);
 fun(s);
 printf("\nThe result is: %s",s);

} 功能是将字符串所有数字移动后所有非数字字符之后,原来的顺序不变!
比如说ab3cd4de5 就是abcdde345

其中
t2[j]=0;
 t1[k]=0;
 for(i=0;i<k;i++)
 s[i]=t1[i];
 for(i=0;i<j;i++)
 s[k+i]=t2[i];

不是很懂 头2个赋值语句是什么意思?
第一个循环是输出非数字字符
第二个循环是输出数字字符

请教!
搜索更多相关主题的帖子: 字符 
2009-08-01 19:09
wenleaf
Rank: 2
等 级:论坛游民
帖 子:7
专家分:20
注 册:2009-8-1
收藏
得分:20 
回复 楼主 文武两边随
个人觉得那两个付值语句没什么用处,只是将t1,t2数组付值结束后再向后付了一个0.
而且输出的时候也是到最后一个的前面一个.
删掉那2句照样可以得出结果.呵呵.
2009-08-01 19:45
文武两边随
Rank: 2
等 级:论坛游民
帖 子:40
专家分:39
注 册:2009-7-23
收藏
得分:0 
明白了 谢谢.....
2009-08-01 20:11
快速回复:一个字符串排序的问题
数据加载中...
 
   



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

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