| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 459 人关注过本帖
标题:这代码错在哪?
只看楼主 加入收藏
灬未来
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2012-7-20
结帖率:100%
收藏
 问题点数:0 回复次数:6 
这代码错在哪?
#include <stdio.h>
#define OUT 0
#define IN    1
void main()
{
    int nl , nw , nc , c , state;

    state = OUT;
    nl = nw = nc = c = 0;
    while ( ( c = getchar() ) != EOF )
    {
        ++nc;
        if ( c == '\n' )
            ++nl;
        if ( c == ' ' || c == '\t' || c == '\n')
            state = OUT;
        else if ( state == OUT )
        {
            state = IN;
            ++ nw;
        }
               
    }

    printf("\n本段有%d个字符\t%d个单词\t%d行\n", nc , nw , nl );
   
}
为什么下面的printf好像没有运行其他的大概都没错
搜索更多相关主题的帖子: include 单词 
2012-08-15 22:36
justNPC
Rank: 5Rank: 5
等 级:职业侠客
帖 子:101
专家分:311
注 册:2012-8-11
收藏
得分:0 
Ctrl+z跳出循环才能才能执行printf 不然你在循环里一直没出来
2012-08-15 22:55
hxc323
Rank: 1
等 级:新手上路
帖 子:4
专家分:3
注 册:2012-8-14
收藏
得分:0 
代码应该没错,nl赋初值1。
2012-08-16 09:34
灬未来
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2012-7-20
收藏
得分:0 
回复 2楼 justNPC
的确是循环没有跳出,如果要解决该怎么办,加了break的话pintf运行的结果又是错误的而且只能运行一次,有没有能让他直到输入结束符才结束循环
2012-08-16 10:21
hxc323
Rank: 1
等 级:新手上路
帖 子:4
专家分:3
注 册:2012-8-14
收藏
得分:0 
回复 4楼 灬未来
难道楼主写这代码的初衷不是用ctrl+z结束循环?既然是那你这段程序还有什么错误吗?用break跳出循环就更elie了。
我理解你这段代码是要统计一段文字里头有多少字符,多少单词,多少行,输入完文字后给它一个ctrl+z不就结了。
楼主不会不知道怎么ctrl+z吧?按ctrl键同时再按下z键。


[ 本帖最后由 hxc323 于 2012-8-16 14:12 编辑 ]
2012-08-16 14:08
xchieftain
Rank: 2
等 级:论坛游民
帖 子:5
专家分:12
注 册:2012-7-19
收藏
得分:0 
不能跳出循环是因为你的while条件的问题,EOF是判断文件的结束,他的值一般是-1,你这里用他来作为一个条件判断 肯定不行的,你可以用一个特别的符号来代替他,比如@或!,这样在你输入完所有的字符后再加一个这 ,就能正常跳出来了,如果你是从一个文件里来读一段字符的话,就可以用EOF,如果你是手输的话,就不要用EOF
2012-08-16 15:08
ltf106
Rank: 2
等 级:论坛游民
帖 子:17
专家分:22
注 册:2012-8-9
收藏
得分:0 
赋值时不能连续赋值。如a=b=c=d=3
2012-08-16 15:28
快速回复:这代码错在哪?
数据加载中...
 
   



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

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