注册 登录
编程论坛 C语言论坛

求助大佬单词计数程序运行结果与事实不符

河边的小柳 发布于 2020-09-26 21:33, 2153 次点击
#include <stdio.h>

#define IN  1
#define OUT 0
main()
{
    int c, nl, nw, nc, state;
   
    state = OUT ;
    nl = nw = nc = 0;
    while ((c = getchar())!= EOF){
        ++nc;
        if (c== '\n')
            ++nl;
        if (c == ' '|| c == '\n' || c == '\t')
            state == OUT;
        else if (state == OUT){
            state = IN;
            ++nw;
        }
    }
    printf("%d %d %d\n", nl , nw, nc);
}



求各位大佬帮忙



只有本站会员才能查看附件,请 登录
6 回复
#2
Link2Points2020-09-26 23:37
只有本站会员才能查看附件,请 登录

#3
河边的小柳2020-09-27 15:13
回复 2楼 Link2Points
大佬,为啥我这边不行欸
我用C-free编的
是不是编译器的问题呢
#4
星泪成寒2020-09-27 15:44
程序代码:

#include <stdio.h>
#include <string.h>

typedef enum {
    STS_INIT,
    STS_WORD_START,

 } state_t;

main()
{
    int c, nl, nw, nc;
    state_t state;
   
    state = STS_INIT;
    nl = nw = nc = 0;

    while ((c = getchar())!= EOF) {
        ++nc;
        switch (c) {
        case '\r':
        case '\n':
            ++nl;
        case '\t':
        case ' ':
            if (STS_WORD_START == state) {
                state = STS_INIT;
                ++nw;
            }
            break;
        default:
            if (STS_INIT == state) {
                state = STS_WORD_START;
            }
            break;
        }
    }

    printf("%d %d %d\n", nl , nw, nc);
}

#5
河边的小柳2020-09-27 21:14
回复 4楼 星泪成寒
typedef enum   

大佬  这是啥?
能直接指出我代码的问题吗
谢谢啦
#6
nosnoy2020-09-28 15:11
else if (state == OUT
红色部分去掉
#7
河边的小柳2020-09-29 11:06
回复 6楼 nosnoy
去掉了还是不对啊
1