【问题标题】:"Refreshing" a string variable so that this multiple choice while loop doesn't repeat infinitely“刷新”一个字符串变量,以便这个多项选择 while 循环不会无限重复
【发布时间】:2016-06-08 20:13:10
【问题描述】:

所以我是 C++ 新手,我正在上入门课程,明天的作业是编写一个程序,该程序有 5 个问题,一些选择题,一些对错。

现在我正在处理第一个多项选择题,它必须有 4 个可能的答案(a、b、c、d),条件是:

  1. 如果用户输入的字母选择正确,则继续下一个问题。
  2. 如果用户输入了错误的字母选择,它会告诉用户他们错了,并再次询问他们问题。
  3. 如果用户输入除了 4 个字母之外的任何其他内容,则会显示无效输入错误,并再次询问他们问题。

2 和 3 会发生,直到他们输入正确的答案。

我正在尝试使用 while 循环(我认为这是要走的路?),然后在里面使用嵌套的 if/else 语句。

我遇到的问题是 Q1 字符串变量在输入时在开始时被实例化,然后就无法更改。使循环要么通过(如果回答正确)或无限重复。

如何刷新变量以使其不再重复,或者以完全不同且更好的方式执行此操作?就像我说的我是新人,所以如果我做错了愚蠢或错误的事情,请原谅我!

这是我目前的代码,到目前为止只有一个问题:

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

int main()
{
    string Q1;
    cout << "How many ounces are in 1 cup?" << endl;
    cout << "A. 12 \nB. 8 \nC. 16 \nD. 4" << endl;
    cin >> Q1;

    while (Q1 != "B") {
        if (Q1 == "A" || Q1 == "C" || Q1 == "D"){
            cout << "Your selected answer " << Q1 << " is incorrect, please select another answer" << endl;
        }
        else {
            cout << "Your answer is invalid, please enter either A, B, C, or D." << endl;
        }

    }
    cout << "Correct! There are 8 ounces in one cup" << endl;
}

【问题讨论】:

  • um cin &gt;&gt; Q1; 在循环的末尾?
  • @NathanOliver 哇,我觉得自己真的很愚蠢,真的就这么简单。出于某种原因,我想象当被重新问这个问题时,它也必须重新问可能的答案,但这真的毫无意义。谢谢!

标签: c++ variables while-loop infinite-loop


【解决方案1】:
while (cin>>Q1) 
{
                if(Q1 == "B")
                {
                    cout << "Next question\n";
                    break;
                }
                if (Q1 == "A" || Q1 == "C" || Q1 == "D"){
                    cout << "Your selected answer " << Q1 << " is incorrect, please select another answer" << endl;
                }
                else {
                    cout << "Your answer is invalid, please enter either A, B, C, or D." << endl;
                }
  }

这不是 100% 正确的答案,但应该会引导您朝着正确的方向前进。我使用了break; 退出循环,但您不必这样做。

干杯

【讨论】:

    【解决方案2】:

    在您的代码中,您有一个无限循环。您再也不会要求用户输入。您需要在循环末尾添加cin &gt;&gt; Q1

    while (Q1 != "B") {
         if (Q1 == "A" || Q1 == "C" || Q1 == "D"){
             cout << "Your selected answer " << Q1 << " is incorrect...
         }
         else {
             cout << "Your answer is invalid, please enter either...
         }
         cin >> Q1;
    }
    

    Here is a live example.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-17
      • 1970-01-01
      • 2016-12-23
      • 1970-01-01
      • 2018-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多