| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 420 人关注过本帖
标题:一道函数练习题
只看楼主 加入收藏
我是殊帕面
Rank: 2
等 级:论坛游民
帖 子:10
专家分:10
注 册:2014-3-30
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:3 
一道函数练习题
/**********
假定字符串s中可能含有字符'*'。请编写函数,
将字符串s中前导'*'全部移到字符串的尾部。例如,若s的串
值为***A*BC*DEF*G**,移动后,串值应为A*BC*DEF*G*****。
注意:不得调用C语言提供的字符串函数。
**********/
void func(char s[])
{
    int i,j=0,k=0;
    char b[100];
    for(i=0;s[i]!='\0';i++)
    {
      if(s[i]=='*')           //算出字符串s中前导'*'个个数
      k++;
      else break;
    }
    for(i=k;s[i]!='\0';i++)
      {
        b[j]=s[i];            //将字符串s后面的元素复制到字符数组b中
        j++;
      }
    for(i=0;i<j+k;i++)
      {
         if(i<j)
         s[i]=b[i];           //得到结果
         else s[i]='*';
      }
    s[i]='\0';
}

想知道还可以怎样做,谢谢!

[ 本帖最后由 我是殊帕面 于 2014-4-27 14:51 编辑 ]
搜索更多相关主题的帖子: C语言 字符串 练习题 
2014-04-27 14:50
l3456
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:80
专家分:133
注 册:2014-4-16
收藏
得分:4 
看到题,突然想到了最近数据结构学的队列,首先进行字符if判断,如果为*就出队,直到队头为数为止,记录出队个数,相应在队尾进队相同个数*。原谅我,实在懒得敲代码了

走向光明的菜鸟学生,励志成为新一代程序猿
2014-04-27 15:04
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:4 
试了试。
程序代码:
void func(char s[])
{
    int i,j=0,k=0,flag=0;
    for(i=0;s[i];i++)
        if(s[i]=='*'&&flag==0)           //算出字符串s中前导'*'个数
        {
            k++;           
        }
        else
        {
            flag=1;
            s[j++]=s[i];            //前移后面的字符
        }
    for(i=0;i<k;i++)                //加上除去的导'*'
        s[j++]='*';
    s[j]='\0';
}
2014-04-27 15:29
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:4 
程序代码:
void s(char* source)
{
    char  buf1[256]={'\0'};   //放置 *
    char* p1=buf1;
    char  buf2[256]={'\0'};   //放置 非 *
    char* p2=buf2;
    char* p=source;
    while(*source!='\0')
    {
        if(*source=='*')
        {
            *p2++=*source++;
        }
        else
        {
            *p1++=*source++;
        }
    }
    p1=buf1;
    while(*p1!='\0')
    {
        *p++=*p1++;
    }
    p2=buf2;
    while(*p2!='\0')
    {
        *p++=*p2++;
    }
    *p='\0';
}

DO IT YOURSELF !
2014-04-29 09:48
快速回复:一道函数练习题
数据加载中...
 
   



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

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