标题:求教:单词计数程序无法输出,求大神帮忙看看~~
只看楼主
hu20845319
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2011-10-25
结帖率:100%
已结贴  问题点数:10 回复次数:9 
求教:单词计数程序无法输出,求大神帮忙看看~~
#include "stdafx.h"
#include "stdio.h"
int main(void)
{
    int c,nline=0,nwrite=0,nchar=0,state=0;
    while((c=getchar())!=EOF)
    {
        ++nchar;
        if(c=='\n')
            ++nline;
        if(c==' '||c=='\n'||c=='\t')
            state=1;//在单词外//
        else if(state==0)
        {
            ++nwrite;
            state=0;//在单词内//
        }
    }
    printf("the number of line:%d\n",nline);
    printf("the number of write:%d\n",nwrite);
    printf("the number of char:%d\n",nchar);

    return 0;
}
搜索更多相关主题的帖子: include 单词 number write 
2012-07-21 22:39
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
得分:3 
为神马无法输出呢?

EOF是个啥东西呢?

这是为什么呢?
2012-07-21 22:42
hu20845319
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2011-10-25
得分:0 
EOF就是end of file的缩写,在C库函数中一般返回值是-1,用Ctrl+Z结束的。

世上没有不可饶恕的错误,只要你有一颗改过的诚心~~
2012-07-21 22:49
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:3 
你跟踪看看程序是怎么执行的嘛

授人以渔,不授人以鱼。
2012-07-21 23:22
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
得分:3 
可以输出啊
只是我不明白你那
         if(c==' '||c=='\n'||c=='\t')
            state=1;//在单词外//
        else if(state==0)
        {
            ++nwrite;
            state=0;//在单词内//
        }
是什么意思,你是要求只要有空格或换行,就不再增加 nwrite 的值吗?      
2012-07-21 23:25
hu20845319
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2011-10-25
得分:0 
我错了,是编译器的问题~~

世上没有不可饶恕的错误,只要你有一颗改过的诚心~~
2012-07-21 23:39
奋斗猪
Rank: 2
来 自:奋斗的途中
等 级:论坛游民
帖 子:43
专家分:91
注 册:2012-7-4
得分:3 
学习了这种计数的方法,呵呵。

贵在坚持!
2012-07-21 23:47
hu20845319
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2011-10-25
得分:0 
回复 5楼 obstratiker
没有啊~~这是一个统计单词的程序,碰到换行符和空格或者制表符的时候,说明在单词外面,所以nwrite(单词个数)的值就不会增加啦~~    开始用visual studio 2010编译没有输出,后来用VC6.0和DEV.C++又可以正常输出了,很奇怪~~

世上没有不可饶恕的错误,只要你有一颗改过的诚心~~
2012-07-21 23:50
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
得分:0 
以下是引用hu20845319在2012-7-21 23:50:33的发言:

没有啊~~这是一个统计单词的程序,碰到换行符和空格或者制表符的时候,说明在单词外面,所以nwrite(单词个数)的值就不会增加啦~~    开始用visual studio 2010编译没有输出,后来用VC6.0和DEV.C++又可以正常输出了,很奇怪~~
可是我觉得 nwrite 统计的是第一个换行符和空格或者制表符出现之前的字符数…
比如我输入 power over whelming
nwirte 就是 5 了
2012-07-22 00:01
hu20845319
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2011-10-25
得分:0 
回复 9楼 obstratiker
我竟然把代码给贴错了,真心无法原谅自己~~对不住各位大大了
中间那部分应该是这样的:
    if(c==' '||c=='\n'||c=='\t')
            state=0;
        else if(state==0)
        {
            ++nwrite;
            state=1;
        }

世上没有不可饶恕的错误,只要你有一颗改过的诚心~~
2012-07-23 12:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-373850-1-1.html




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

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