注册 登录
编程论坛 C++教室

关于do while的问题

ClarenceC 发布于 2014-01-15 17:50, 674 次点击
#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.
4 回复
#2
jcw081201102014-01-16 00:42
你的程序本身是没问题的哦;亲
你在do while中 用while米问题的啦;问题出在cin上的呢;记得下次用cin之后带上 cin.clear();
#3
fl89622014-01-16 09:36
回复 楼主 ClarenceC
你这个里面的while(cin>>x)有问题,你这样写程序就一直等待你输入x,只是一个while(cin>>x),程序如何知道你不想输入X了呢?就等于你这个while是没有结束语句的。
#4
jcw081201102014-01-16 19:27
我知道楼主想说什么: 你的do while 是对的 里面添加了一个while只是添加了一个循环。这个是没问题的;但是你的while(cin>>x),你假想的判定条件应该是cin>>x 当值不为int的时候推出, 这个时候如果输入不是int的值 确实会推出,但是同时cin也会置为flash;然后到了你的第二个while的时候又拿cin来运算,这个时候cin是错误的值,也就是你应该添加一个cin.clear();来清空cin的错误状态;这样在你的第二次while的时候才会进行判断;否则程序遇到cin只会直接跳过;懂了吧!
#5
ClarenceC2014-01-18 19:32
谢谢。
1