了解《C程序设计语言(The C Programming Language)》的请进,C语言初级问题

#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);
}
这是原书14页的程序,包括注释,完全一样
但是运行结果却不对,nw项始终为0,经过测试可能是#define OUT 0和if (state = OUT的问题,程序直接退出了,在把OUT定为非0之外的数比如1、2、3,运行结果是正确的
问题是if (state = 0 会不会导致程序从此结束?如果会的话,为什么书上还这么写,是不是标准出现了改动,那么还有什么需要注意的吗?

第1个回答  2013-10-14
……
if (c == ' ' || c == '\n' || c == '\t')
state = OUT;
else
……
因为你的这一句。在没有花括号限定范围的情况下,else总是与它上面最近的未配对的if配对。所以只要你输入的句子中有空格或者换行等也就是满足if中的三个情况else的语句就不会再执行下去。所以执行到state=OUT这句,所以你的nw还是0,同样state也是0。
第2个回答  2013-10-14

完全一样?

请看这句

if (state = OUT)

if语句里面怎么可能是赋值,应该是==才对


书上程序我运行的结果没有任何问题

本回答被提问者和网友采纳
第3个回答  2013-10-14
把if(state = OUT)改成if(state == OUT)试试

...C Programming Language)》的请进,C语言初级问题
……if (c == ' ' || c == '\\n' || c == '\\t')state = OUT;else ……因为你的这一句。在没有花括号限定范围的情况下,else总是与它上面最近的未配对的if配对。所以只要你输入的句子中有空格或者换行等也就是满足if中的三个情况else的语句就不会再执行下去。所以执行到state=OUT这...

求《C语言解惑》(The C puzzle book)资料
第二阶段:《c程序设计语言》(The C Programming Language)和《C语言解惑》(The C puzzle book) 理由:《the c programming language》号称c语言圣经。其实它也只是一本介绍基础语法的书,不做入门教程是因为对于初学者来说,它难度稍大,之所以推荐,是因为它能让你---系统而严密的---把C语言知识...

C语言初学者适合读英文原版《The C Programming Language》吗?
标准是为了保持C纯洁性,免得成为“方言”而不兼容。3、本书的讲解从最简单的开始,完全是按照不懂任何C语言开始的,逐步深入。虽说简单,但你须知,其中有些话语虽然一句话表述过去了,你不定能真正深刻理解,回头等你入门了,读些高级的书籍,类似《expert c programming》之后,你再回头看圣经,会有...

请各位高手推荐几本c语言的书或者视频教程 初级和入门级的 谢谢
我这有 入门级的 视频 讲义 和 习题

...C程序设计语言和原版The C Programming Language的内容是否一致...
会的。C程序设计语言注重数学 C programming Language 注重思维、语法

我是专科计算机学生,要开C语言编程学习课程.想请教一下该如何开始学习...
所以强烈建议你要提前学习,对编程的思想和一些基本概念有所掌握,否则可能跟不上老师的课。另外国外有一本非常经典的c语言教学书籍值得参考:the c programming language(c程序设计语言)http:\/\/www.gougou.com\/search?search=the%20c%20programming%20language&restype=-1&id=10000001 ...

C语言程序设计-C语言简介
1977年,Dennis Ritchie的《可移植的C语言编译程序》发布,使得C语言得以广泛传播。随后,Brian Kernighan和Dennis Ritchie合著的经典著作《The C Programming Language》进一步巩固了其地位。随着80年代计算机普及,ANSI为C语言制定了统一标准,消除了不同版本的混乱,C语言进入了标准化进程。从C89到C11,C...

求C语言初学者书籍推荐
先看《C Primer Plus中文版》(如果你英语好,可以看英文版《C Primer Plus 》)推荐从经典入手。推荐的话,这本书上的习题是有答案的,可以练练。如果着急的话可以看谭浩强的《C语言程序设计》,看完基本小程序会写,算入门了。进阶的书去看《The C Programming Language》,俗称C语言圣经。再进一步...

C语言程序设计该如何入门?
Bjarne Stroustrup的《C++程序设计语言》(The C++ Programming Language)一定要看,这本书里面对于C的一些基础概念的定义,比我见过的其他任何C语言书都要全,都要仔细;Bjarne Stroustrup的《C++语言的设计与演化》(The Design and Evolution of C++)和David R.Hanson 的《C语言接口与实现 创建可重用软件的技术》(C ...

谭浩强 C语言 书籍 自学起步
Kernighan和Ritchie的《The C Programming Language》(中译名《C程序设计语言》)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标准C语言相去甚远,大家一定要看最新的版本,否则不如不看。另外,即使是最经典最权威的书,也没有办法面面俱到,所以手边常备一本《C语言参考手册》是十分必要的。《C语言参考手...

相似回答