标题:[求助]一个小程序中的问题
只看楼主
狂人老大
Rank: 1
来 自:杭州
等 级:新手上路
威 望:1
帖 子:394
专家分:0
注 册:2007-6-21
得分:0 
可是我输入非零数也会输出word read is。。。。的啊
只有照5楼说的才可以跳出来的

ACMer的QQ群:33741351
单片机QQ群:55130117
2007-08-08 20:44
vn198651
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-6-2
得分:0 
输入非零当然出word read is这句啊,因为你输入非零,所以while的判断条件成立,执行后面的语句
当你输入零的时候,while语句的条件不成立,则跳出while循环,执行cout << "ok: no more words to read: bye!\n";
程序不就停了么?
你加了那2个{}括号了么?
2007-08-08 20:50
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
得分:0 
以下是引用aipb2007在2007-8-8 10:11:52的发言:

哪有什么无限循环。

想跳出循环,不想继续输入了,直接按f6+回车,或者ctrl+z回车,这是输入文件结束符。

Ctrl + Break... 秒杀任何DOS程序...


女侠,约吗?
2007-08-08 20:51
狂人老大
Rank: 1
来 自:杭州
等 级:新手上路
威 望:1
帖 子:394
专家分:0
注 册:2007-6-21
得分:0 
以下是引用vn198651在2007-8-8 20:50:15的发言:
输入非零当然出word read is这句啊,因为你输入非零,所以while的判断条件成立,执行后面的语句
当你输入零的时候,while语句的条件不成立,则跳出while循环,执行cout << "ok: no more words to read: bye!\n";
程序不就停了么?
你加了那2个{}括号了么?

可是这里输入的是字符啊,如果while()括号里的是数值,那么可以判断跳出循环。
但是这里是字符也一样的吗?
我输入0也是同样的反应啊,还是跳不出循环啊!!


ACMer的QQ群:33741351
单片机QQ群:55130117
2007-08-08 21:28
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
to 狂人老大:
cin >> word

这个句子作为条件,请区别于单独word作为条件,cin >> word操作返回的并非word,所以你不能以 word的值来判断0或者非0。这个句子返回的是个流状态,当一次输入合法正确时,返回真,非法错误时,为假。

再有"0" != 0

Fight  to win  or  die...
2007-08-08 21:58
狂人老大
Rank: 1
来 自:杭州
等 级:新手上路
威 望:1
帖 子:394
专家分:0
注 册:2007-6-21
得分:0 
以下是引用aipb2007在2007-8-8 21:58:15的发言:
to 狂人老大:
cin >> word

这个句子作为条件,请区别于单独word作为条件,cin >> word操作返回的并非word,所以你不能以 word的值来判断0或者非0。这个句子返回的是个流状态,当一次输入合法正确时,返回真,非法错误时,为假。

再有"0" != 0

那么你的意思就是输入0也不回跳出循环了吧
只能是你说的用F6+回车键了吧
那就对了 加了{}也是没有用的


ACMer的QQ群:33741351
单片机QQ群:55130117
2007-08-08 22:31
lijy520
Rank: 2
等 级:论坛游民
帖 子:119
专家分:42
注 册:2007-8-8
得分:0 
"0" != 0

2007-08-09 18:59
wwyinhuabin
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-8-10
得分:0 

#include <iostream>
using namespace std;

#include <string>

int main()
{
string word;
cin >> word

while ( word!="/" )
{cout << "word read is: " << word << '\n';
cin>>word;
}

cout << "ok: no more words to read: bye!\n"; //什么情况下才能执行这句??

return 0;
}

加了个判断 应该就行了

2007-08-10 11:29
alleks
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-8-3
得分:0 
以下是引用vn198651在2007-8-8 20:27:20的发言:

while ( cin >> word )
cout << "word read is: " << word << '\n';

cout << "ok: no more words to read: bye!\n"; //什么情况下才能执行这句??

return 0;

我怎么感觉while之后的一个语句应该用括号扩起来呢。。。

while ( cin >> word )

{

cout << "word read is: " << word << '\n';

}

cout << "ok: no more words to read: bye!\n"; //什么情况下才能执行这句??

return 0;

比如这样
要不然每次输入一个非零数都会输出ok: no more words to read: bye!的吧,加了括号之后就不会了,当你输入结束的时候输入0,就会跳出循环,输出提示语句
ok: no more words to read: bye!
初学者,请多指教!

1.while中本来就只有一句,不用加括号的.
2.输入0也没用,要输结束符ctrl+Z才对


编程真辛苦啊^^^^^
2007-08-10 12:19
DMC_YA
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-8-9
得分:0 
word定义的时候被定义为字符串,所以输入任何东西在内存地址中都存有值,且都是为真1。所以会一直循环下去。

“字符串有字节大小与合法与不合法之分,似乎没有真假之分。数字中的0为假,其他数字与字符串都为真!”我不知道这句话对不对,望指教。

再回首往事都已随枫叶一片片落,夕日伊人耳边话也随潮声向东流,万事都已成空!
2007-08-10 12:24



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




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

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