| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 665 人关注过本帖
标题:关于do while的问题
只看楼主 加入收藏
ClarenceC
Rank: 2
等 级:论坛游民
帖 子:54
专家分:18
注 册:2014-1-10
结帖率:87.5%
收藏
 问题点数:0 回复次数:4 
关于do while的问题
#include <iostream>
#include <string>
using namespace std;
int main()
{
 string str;
 do{
  int x,s=0;  // ‘s’ 用来计数总和
  cout<<"enter numbers";
  while(cin>>x){
   s += x;} //用此求得输入数字的总和
  cout<<"sum is "<<s<<endl;  //输出结果
  cout<<"any more ?(yes/no)";
  cin>>str;
 }while(!str.empty() && str[0]!='n');
 return 0;
}
为什么在do语句中嵌入while语句后,就无法实现do while循环呢?
thanks.
搜索更多相关主题的帖子: include 
2014-01-15 17:50
jcw08120110
Rank: 8Rank: 8
来 自:南京
等 级:蝙蝠侠
帖 子:272
专家分:742
注 册:2009-6-8
收藏
得分:0 
你的程序本身是没问题的哦;亲
你在do while中 用while米问题的啦;问题出在cin上的呢;记得下次用cin之后带上 cin.clear();

君生我未生 我生君以老
2014-01-16 00:42
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
收藏
得分:0 
回复 楼主 ClarenceC
你这个里面的while(cin>>x)有问题,你这样写程序就一直等待你输入x,只是一个while(cin>>x),程序如何知道你不想输入X了呢?就等于你这个while是没有结束语句的。

想抽苏烟了。
2014-01-16 09:36
jcw08120110
Rank: 8Rank: 8
来 自:南京
等 级:蝙蝠侠
帖 子:272
专家分:742
注 册:2009-6-8
收藏
得分:0 
我知道楼主想说什么: 你的do while 是对的 里面添加了一个while只是添加了一个循环。这个是没问题的;但是你的while(cin>>x),你假想的判定条件应该是cin>>x 当值不为int的时候推出, 这个时候如果输入不是int的值 确实会推出,但是同时cin也会置为flash;然后到了你的第二个while的时候又拿cin来运算,这个时候cin是错误的值,也就是你应该添加一个cin.clear();来清空cin的错误状态;这样在你的第二次while的时候才会进行判断;否则程序遇到cin只会直接跳过;懂了吧!

君生我未生 我生君以老
2014-01-16 19:27
ClarenceC
Rank: 2
等 级:论坛游民
帖 子:54
专家分:18
注 册:2014-1-10
收藏
得分:0 
谢谢。
2014-01-18 19:32
快速回复:关于do while的问题
数据加载中...
 
   



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

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