| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1193 人关注过本帖
标题:只输入字母和*号,输出是结果是将前面的*放到字符串的尾部
只看楼主 加入收藏
淡水鱼·到海
Rank: 2
等 级:论坛游民
帖 子:30
专家分:26
注 册:2013-9-12
收藏
得分:0 
回复 3 楼 erty1001
运行后,输入后,按回车后,就喊调试
2014-09-04 19:38
funyh250
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:26
帖 子:290
专家分:1573
注 册:2013-12-25
收藏
得分:5 
void fun(char *a)
{
    int i=0,j,n,m;
    char *b
    b=a;
    while(*b=='*')   //这里一直循环!!!!
        i++;
    m=i;
    for(j=0;*b!='\0';j++)   // *b!='\0'一直成立!!!!
        a[j]=b[i++];
    for(n=0;n<m;n++)
        a[j++]='*';
    a[j]='\0';
}

学习是大事   吃喝拉撒睡是小事   其他的那都不是事
2014-09-04 19:48
erty1001
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:331
专家分:1433
注 册:2014-8-31
收藏
得分:0 
你要结合2楼3楼和4楼 综合到一起,也许才能得出正确的结论
遇到问题不是说一下子 就能解决的 你自己也要多想想
我帮你结合2 3 4楼 试试改改

  void fun(char *a)
{
    int i=0,j,n,m;
    char *b     /*这里添加了分号*/     
    b=a;
    while(*b=='*')   
       { i++;b++;}    /*注意这里添加了b指针的移动语句*/
    m=i;
    for(j=0;*b!='\0';j++)
        a[j]=b[i++];
    for(n=0;n<m;n++)
        a[j++]='*';
    a[j]='\0';
}
2014-09-04 20:04
erty1001
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:331
专家分:1433
注 册:2014-8-31
收藏
得分:3 
更正一下

void fun(char *a)
{
    int i=0,j,n,m;
    char *b; /*这里添加了分号*/   
    b=a;
    while(*(b+i)=='*')   /*注意这里只处理i 不处理b */
    i++;
    m=i;
    for(j=0;*(b+i)!='\0';j++)      /*注意这里判断的是*(b+i) 不移动处理b */
    {a[j]=b[i];i++;}      /*稍有改动 不影响结果 尽量使用简单语句*/

   for(n=0;n<m;n++)
       a[j++]='*';
  //  a[j]='\0';    /*这里忽略掉该行 */

}
2014-09-04 20:32
Coincedence4
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:52
专家分:151
注 册:2014-9-4
收藏
得分:0 
回复 9 楼 淡水鱼·到海
while(*b=='*')
         i++;
     m=i;
     for(j=0;*b!='\0';j++)
         a[j]=b[i++];/*是不是这儿错了*/

while循环没有控制指针b移动陷入死循环;假如改正后:
    while(*b=='*')
         {i++;b++}
     m=i;
     for(j=0;*b!='\0';j++)
         a[j]=b[i++];/*是不是这儿错了*/

b[i++]这里有发生错误,因为通过while循环已经改变了指针b的位置,同时i也不再是0。[]是地址运算符,b[i++]等价与{b+i,i++},而你想要的是b+1。所以可行的办法是重新给i赋值为0,或者添加新的控制变量,或者干脆像我那样不用i
2014-09-04 21:44
fogmaple
Rank: 4
来 自:江西省赣州市于都县
等 级:业余侠客
威 望:1
帖 子:119
专家分:233
注 册:2014-7-28
收藏
得分:0 
没有看出来是那里了出问题
2014-09-05 08:14
淡水鱼·到海
Rank: 2
等 级:论坛游民
帖 子:30
专家分:26
注 册:2013-9-12
收藏
得分:0 
回复 12 楼 funyh250
a[j]=b[i++];b没有移下一位?
2014-09-05 10:15
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 楼主 淡水鱼·到海
整理好思路,不要把简单问题复杂化。

授人以渔,不授人以鱼。
2014-09-05 10:17
淡水鱼·到海
Rank: 2
等 级:论坛游民
帖 子:30
专家分:26
注 册:2013-9-12
收藏
得分:0 
回复 14 楼 erty1001
其实我是想了很久都没想通我才问的,就因为我脑袋卡在哪儿了,没想通。现在想通一点了,谢谢!
2014-09-05 10:36
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:1 
学编程,一定要学会把复杂问题分解为若干简单小问题,逐个解决,不要试图做意大利面条。

授人以渔,不授人以鱼。
2014-09-05 10:43
快速回复:只输入字母和*号,输出是结果是将前面的*放到字符串的尾部
数据加载中...
 
   



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

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