| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 947 人关注过本帖
标题:字符串处理问题
只看楼主 加入收藏
空中飘影
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2009-11-29
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
字符串处理问题
输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
程序如下:



#include<stdio.h>
void main()
{
  char string[81];
  int i,num=0,word=0;
  char c;
  gets(string);
  for(i=0;(c=string[i])!='\0';i++)
  if(c==' ')word=0;
  else
     if(word==0)
  {
     word=1;
     num++;
   }
  printf("There are %d words in the line.\n",num);
 }
如何判断是不是个单词啊,特别是红色部分,怎么word两次等于0?谭浩强书上的解释看不懂。
   
搜索更多相关主题的帖子: 字符 
2009-12-02 18:29
hoho568
Rank: 5Rank: 5
等 级:职业侠客
帖 子:101
专家分:378
注 册:2009-7-14
收藏
得分:3 
因为要求了,单词之间要有空格的。
所以只要是空格,然后记录下来,如果空格之后出现字母就算一个单词。

红色的意思就是说,这个字母前面是空格的话;那么单词数目加一。
word=0,表明中现在字符是空格。
2009-12-02 18:46
jcslt
Rank: 8Rank: 8
来 自:90-xx.com
等 级:蝙蝠侠
帖 子:251
专家分:975
注 册:2009-10-10
收藏
得分:3 
if(c==' ')word=0;//出现空格,定义word为0
  else
     if(word==0)//当word为0时表示出现空格,单词数加1(num++)
  {
     word=1;
     num++;
   }

www.
2009-12-02 18:48
菜豆王子
Rank: 2
等 级:论坛游民
帖 子:44
专家分:96
注 册:2009-11-22
收藏
得分:3 
其实word不是计数用的,计数的是num;
而word是用来判断是否读入了一个空格,读入得是空格的话word=0;
那么接下来就是判断了if(word==0) num++,而且它还把word=1,是为了不重复计数;
这样只有到下一次读入空格是才可以计数了。自己上机单步调试一下,看看它的运行过程!
2009-12-02 18:50
空中飘影
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2009-11-29
收藏
得分:0 



是空格的时候用if(c==' ')word=0;这句我明白,那么下一句
else if(word==0)意思应该是读入的不是空格,那为什么word还等于0呢?
2009-12-02 19:21
jcslt
Rank: 8Rank: 8
来 自:90-xx.com
等 级:蝙蝠侠
帖 子:251
专家分:975
注 册:2009-10-10
收藏
得分:0 
else if(word==0)意思应该是读入的不是空格,那为什么word还等于0呢?

读入的是空格啊,然后num才加1,再返回循环重新判断!也可以这样理解啊:
void main()
{
  char string[81];
  int i,num=0,word=0;
  char c;
  gets(string);
  for(i=0;(c=string[i])!='\0';i++)
  if(c==' ')word=0;
  else{
       if(word==0)//此if判断word的值
       {
      word=1;
      num++;
       }
      else printf("这句话重复的次数+单词的个数=字母的个数\n");//word的值不为0时
    }
  printf("There are %d words in the line.\n",num);
}


[ 本帖最后由 jcslt 于 2009-12-2 20:08 编辑 ]

www.
2009-12-02 19:46
无心一思
Rank: 1
等 级:新手上路
帖 子:3
专家分:3
注 册:2009-12-2
收藏
得分:3 
这个程序很容易理解,但中间有不必要的程序行,如果看不懂的话,我改了一下,看看吧。。。


#include<stdio.h>
void main()
{
    char string[81];
    int i,n=1;
    gets(string);
    for(i=0;string[i]!='\0';i++)
    {
        if(string[i]==' ')
            n++;
        continue;
    }
    printf("There are %d words in the line.\n",n);
}
2009-12-02 20:01
endlesswaltz
Rank: 2
等 级:论坛游民
帖 子:2
专家分:43
注 册:2009-11-25
收藏
得分:3 
去网上搜,“自动机”模型,看完之后自己画画逻辑图,就理解了
2009-12-02 21:03
未来不是梦
Rank: 1
来 自:长春
等 级:新手上路
帖 子:1
专家分:3
注 册:2009-12-1
收藏
得分:3 
自动机?没听过 去搜搜

电脑新手,多多指教
2009-12-02 21:25
快速回复:字符串处理问题
数据加载中...
 
   



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

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