| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 699 人关注过本帖
标题:一道有关简单函数的习题
只看楼主 加入收藏
seep666
Rank: 2
等 级:论坛游民
帖 子:91
专家分:14
注 册:2010-3-18
结帖率:62.07%
收藏
已结贴  问题点数:10 回复次数:8 
一道有关简单函数的习题
题目:输入字符串包含字母和*号,编写函数功能是将字符串中的前导*号全部移到字符串的尾部;例如:*******a*bc*def*g****    移动后的字各个符串是:a*bc*def*g***********
下面是我做的,不知道为什么运气没结果,什么都没有,请哥哥,姐姐指教!
#include"stdio.h"
fun(char *a)            
{
int n=0,i,j=0;           
char *b=a;
while(*b='*')         //我是先算前面有多少个*号  
{
  n++;
  b++;
}
  while(*b!='\0')
      a[j++]=*b;    //我意思是把前面*号先放下,把后面的全得新放到a数组中
  i=j;
  for(;j<=i+n;j++)      //把前面的*号转到后面去
      a[j]='*';
}
 void main()
 {
   char s[100];
   gets(s);
   fun(s);
   puts(s);
 }
搜索更多相关主题的帖子: 习题 函数 
2010-08-19 10:30
奋斗青春
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-8-19
收藏
得分:0 
  我用tc编译时它说while(*b='*')     这一行有非法字符不在fun函数里面
2010-08-19 10:37
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
楼上,因为你的TC不支持中文和不识别//这种注释

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-08-19 10:42
vs_inzaghi
Rank: 5Rank: 5
来 自:湖北
等 级:职业侠客
威 望:1
帖 子:303
专家分:364
注 册:2009-8-17
收藏
得分:0 
回复 2楼 奋斗青春
因为判断相等与否是要用“==”的,而不是“=”……

我很懒,但我讨厌别人说我懒……
2010-08-19 10:46
vs_inzaghi
Rank: 5Rank: 5
来 自:湖北
等 级:职业侠客
威 望:1
帖 子:303
专家分:364
注 册:2009-8-17
收藏
得分:0 
LZ的头像看起来像个怨妇……

我很懒,但我讨厌别人说我懒……
2010-08-19 10:46
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:10 
#include <stdio.h>
#include <string.h>

void fun(char *a)                //函数是有返回值类型的,不写的话代表int类型的         
{

    int n=0,i,j=0;   
    char tmp[100];                //定义一个局部的数组存放修改后的字符串
    char *b=a;
printf("In fun!\n");
    while(*b == '*')            //不是‘=’而是‘==’  
    {
        n++;
        b++;
    }

    while(*b != '\0')
      tmp[j++] = *b++;            //把从第一个有效字符开始的后续字符都先保存好

    i=j;
    for(; j < i + n; j++)        //等于号不要,从j到j+n-1就有n个*了
        tmp[j]='*';
   
    tmp[j] = '\0';                //字符串的结束符

    strcpy(a,tmp);                //存入原字符数组中

}

int main()
{
   char s[100];

   gets(s);
   fun(s);
   puts(s);

   return 0;
}
2010-08-19 13:36
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:0 
楼上的没必要用tmp数组
程序代码:
#include"stdio.h"
void fun(char *a) {
    int n=0,i,j=0;
    char *b=a;
    while(*b=='*') {       //==
        n++;
        b++;
    }
    while(*b!='\0')
        a[j++]=*b++;    //*b++
    i=j;
    for(; j<i+n; j++)  
        a[j]='*';
    a[j] = '\0';        //结束
}
int main() {
    char s[100];
    gets(s);
    fun(s);
    puts(s);
}

2010-08-19 14:08
seep666
Rank: 2
等 级:论坛游民
帖 子:91
专家分:14
注 册:2010-3-18
收藏
得分:0 
回复 5楼 vs_inzaghi
大哥你太有才了,又是你帮了我
2010-08-20 11:09
seep666
Rank: 2
等 级:论坛游民
帖 子:91
专家分:14
注 册:2010-3-18
收藏
得分:0 
谢谢各位了
2010-08-20 11:09
快速回复:一道有关简单函数的习题
数据加载中...
 
   



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

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