| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 715 人关注过本帖
标题:新手求问- - 我这个程序到底错在哪里-0-*
只看楼主 加入收藏
TakeRecover
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-12-18
结帖率:0
收藏
已结贴  问题点数:20 回复次数:10 
新手求问- - 我这个程序到底错在哪里-0-*
#include<stdio.h>
#include<string.h>
main()
{
   char ch[50];
   int i,j,len;
   printf("Please enter a string:\n");
   scanf("%s",ch);
   len=strlen(ch);
   for(i=0;i<len;i++)
   {
       if(ch[i]>'0'&&ch[i]<'9')
       {
         for(j=0;j<len;j++)
             ch[j-1]=ch[j];
         j--;
       }
   }
    puts(ch);
}
 
  我的意思是去掉一串字符里面的数字 然后输出  但是不知道为什么只去掉了第一个字符- -!  
     纠结- -
搜索更多相关主题的帖子: include 
2011-12-18 16:41
小赤佬se
Rank: 1
等 级:新手上路
帖 子:2
专家分:4
注 册:2011-12-18
收藏
得分:4 
是不是循环只有一次哦?
2011-12-18 16:46
TakeRecover
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-12-18
收藏
得分:0 
为什么只循环一次?
2011-12-18 16:47
woshiaokeman
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:60
专家分:123
注 册:2011-4-5
收藏
得分:4 
ch[j-1]=ch[j];
当j=0的时候,你解释解释……
我觉得应该是
for(j=i;j<len;j++)
ch[j]=ch[j+1];
2011-12-18 17:06
TakeRecover
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-12-18
收藏
得分:0 
  有木有会的人在捏   
  指教下撒 - -   纠结好半天了
    问了很多地方- -  还是回来了.....
2011-12-18 17:09
TakeRecover
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-12-18
收藏
得分:0 
回复 4楼 woshiaokeman
还是有问题...
  你说的那个的确没错
    我试着改了一下    我输入qwer1234qwer的时候- =
   去掉了中间的12  3和4还是没有变化  循环体那里还是有问题啊....
2011-12-18 17:13
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:4 
回复 楼主 TakeRecover
#include<stdio.h>
#include<string.h>
main()
{
   char ch[50];
   int i,j,len;
   printf("Please enter a string:\n");
   gets(ch);
   len=strlen(ch);
   for(i=0;i<len;i++)
   {
       if(ch[i]>='0'&&ch[i]<='9')
       {
         for(j=i;j<len;j++)
             ch[j]=ch[j+1];
            len--;
            i--;
       }
   }
   ch[len] = '\0';
   puts(ch);
}


梅尚程荀
马谭杨奚







                                                       
2011-12-18 17:29
TakeRecover
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-12-18
收藏
得分:0 
回复 7楼 有容就大
有点看不明白  为什么要i--和len--??
  最后那里ch[len] = '\0';   有什么作用?
2011-12-18 17:37
ggyy4k
Rank: 5Rank: 5
等 级:职业侠客
帖 子:111
专家分:334
注 册:2010-6-28
收藏
得分:4 
i--是因为ch[j]=ch[j+1];把后一个数组单元的值赋值给了当前单元,但上层 循环for(i=0;i<len;i++)会执行一次i++,故要先i--,使下次循环继续检查当前单元值。
len--是因为if(ch[i]>='0'&&ch[i]<='9')语句执行一次,就等于删除了一个数组单元,故数组长度需要减1;
最后那里ch[len] = '\0';给检查完毕的数组最后一个单元的后一个单元赋值为'\0',字符串结束标志
2011-12-18 17:54
TakeRecover
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-12-18
收藏
得分:0 
回复 9楼 ggyy4k
唔~
  原来如此         了解了额~
   thank you ~
2011-12-18 18:47
快速回复:新手求问- - 我这个程序到底错在哪里-0-*
数据加载中...
 
   



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

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