Do / While循环不循环

时间:2012-11-10 11:41:58

标签: c++ do-while

我是C ++的初学者,我正在做一个do / while循环练习,我很难识别它的条件,更不用说它没有正确循环了。你能给我一个如何解决这样一个简单问题的良好基础吗?我想尝试使用字符串来满足do / while循环的条件。

#include <iostream>
#include <string>
#include <sstream>
using namespace std;

int main ()
{
    double mean = 0;
    string continuer;
    do
    {
        cout << "Do you want to proceed?" << endl;
        getline (cin, continuer);
        cout << "something" << endl;
        cin >> mean;
    }
    while (continuer == "Y" || continuer == "y");

    return 0;
}

2 个答案:

答案 0 :(得分:1)

我从您的问题和评论中收集到的内容,您希望按照用户的意愿迭代循环。

你只需要一个char变量,就像这样。

string input ;
int number = 0 ;

do
{
  cout << "Please enter a number" << endl ;
  cin >> number ;
  cout << "If you want to continue, Press Y" << endl ;
  cin >> input ;

} while (input == "Y" || input == "y") ;

此do-while循环将至少执行一次,因为在循环执行结束时会检查条件。因此,即使用户在第一次询问时没有按Y,该循环也会被执行一次。在此之后,只要满足条件,它就会继续。

在此处详细了解do-while循环。

http://www.cplusplus.com/doc/tutorial/control/

答案 1 :(得分:0)

你看到了什么?循环体应该至少执行一次。那会发生吗?

此外,Continuer可以长于一个字符,例如“Y \ n”。做那个测试。

以下是我要做的事情:

#include <string>
#include <sstream>
using namespace std;



    int main ()
    {
        double number = 0;
        string continuer;
        int loop = 0
        do
        {

            cout << "Do you want to proceed?" << endl;
            getline (cin, number);
            cout << "something" << endl;
            cin>> mean;
            getline (cin, continuer);

            cout << "Your answer was '" << continuer << "'." << endl;
            loop = strcmp("Y", continuer);
            if (loop != 0) strcmp("y", continuer);
            if (loop == 0) cout << "Your choice is to stop." << endl;
            else cout << "Your choice is to continue." << endl;
        } while (loop == 0);
        cout << "Bye" << endl;
        return 0;
    }

尽可能明确,直到您对所使用的语言和算法充满信心。它更容易看到发生了什么,当它工作时,很容易删除'cout'线。