0

我是 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;
}
4

2 回答 2

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/

于 2012-11-10T11:56:09.023 回答
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”行。

于 2012-11-10T11:45:33.093 回答