论坛: 编程破解 标题: C程序设计(谭老)书中的疑问 复制本贴地址    
作者: J [jsophie]    论坛用户   登录
本题是<<C程序设计>>第二版 谭老师  书中PAGE138 例7.8
本人在TURBO C 2.0上怎么也得不出正确结果,不管我按要求输入多少个单词,都是显示
There are 1 words in the line.
请教为什么

#include <stdio.h>
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);
}

地主 发表时间: 04-08-19 11:58

回复: TomyChen [quest]   版主   登录
抄得不够仔细!!!
else if(word==0);
后面的 ";"
看清了...咳...


B1层 发表时间: 04-08-19 12:30

回复: ljsh012 [ljsh012]   论坛用户   登录
就是,细心点俄。
if语句后面是不用分号的。切记!

B2层 发表时间: 04-08-19 12:35

回复: qiezic [qiezic]      登录
没错是分号的问题!

[此贴被 剑圣风暴(qiezic) 在 08月19日14时09分 编辑过]

B3层 发表时间: 04-08-19 12:45

回复: J [jsophie]   论坛用户   登录
我昏
你们学的还不错嘛,但真的很大意了.
if(c==' ')word ==0;
大家注意了if后面是(),但()后面就是语句了啊,所以要分号的.

if (表达式) 语句;
大家不信自己在TURBO C2.0上试试,告诉我为什么不能得出正确结果.

B4层 发表时间: 04-08-19 13:10

回复: Garu [syshunter]   版主   登录
if (表达式) 语句;  //是没错
else if( 表达式)    //这里弄;干什么?
{
  语句;
}

楼主注意看B1层的回复。



B5层 发表时间: 04-08-19 13:43

回复: TomyChen [quest]   版主   登录
剑圣风暴 [qiezic]    论坛用户
你说是string的问题!?


B6层 发表时间: 04-08-19 14:11

回复: qiezic [qiezic]      登录
NO,NO!
是太久没玩C,搞错了!
Sorry!


B7层 发表时间: 04-08-20 13:29

回复: windflower [windflower]   论坛用户   登录
else if(word==0);
很明显,这句后面多了个分号

B8层 发表时间: 04-08-20 21:34

回复: baobao [gnijnil]   论坛用户   登录
那书里有几个,在我的机上怎么答案会不一样,也不会出错,就是答案不一样
就像楼猪的那样!

[此贴被 baobao(gnijnil) 在 08月20日22时03分 编辑过]

B9层 发表时间: 04-08-20 22:02

回复: TomyChen [quest]   版主   登录
[quote]
我昏
你们学的还不错嘛,但真的很大意了.
if(c==' ')word ==0;
大家注意了if后面是(),但()后面就是语句了啊,所以要分号的.

if (表达式) 语句;
大家不信自己在TURBO C2.0上试试,告诉我为什么不能得出正确结果
[quote]

楼主啊。。。细心一点!!!

B10层 发表时间: 04-08-21 08:27

回复: kenter1643 [kenter1643]   论坛用户   登录
#include <stdio.h>
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(条件)执行;(执行为空)for的循环范围变了,对下的程序只执行一次,所以你的结果只会输出num++就是1)
{word=1;
num++;}
printf("There are %d words in the line.\n",num);
}


B11层 发表时间: 04-08-23 02:35

回复: J [jsophie]   论坛用户   登录
谢谢大家!

B12层 发表时间: 04-08-23 19:53

回复: yuanrulai [yuanrulai]   论坛用户   登录


B13层 发表时间: 04-08-25 10:57

回复: caesar000 [caesar000]   论坛用户   登录
else if(word==0);
{word=1;
num++;}
printf("There are %d words in the line.\n",num);
}

这两行都有错!
else if(word==0); /*多了分号*/
{word=1;
num++;} /*分号位置有错*/


B14层 发表时间: 04-08-26 16:38

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号