如何解决C ++ if…then语句
| 因此,我正在尝试制作一个简单的应用程序来查询用户。它提出一个问题,用户回答1、2、3或4。然后,应用将获取该答案,如果正确,则将+1添加到total_score中,该score将在最后显示。一切对我来说似乎都是正确的,但是当我运行它并到达if (q1_valid == false)
部分时,无论q1_valid是true还是false,它都会跳过提示并运行goto。
#include <iostream>
using namespace std;
int main()
{
int q1_answer;
int total_score;
bool q1_correct;
bool q1_valid;
Question_1:
cout << \"Question 1 (#3 is correct)\" << endl;
cout << \"1.) Answer 1\" <<endl;
cout << \"2.) Answer 2\" <<endl;
cout << \"3.) Answer 3\" <<endl;
cout << \"4.) Answer 4\" <<endl;
cin >> q1_answer;
if (q1_answer == 1)
q1_correct = false;
q1_valid = true;
if (q1_answer == 2)
q1_correct = false;
q1_valid = true;
if (q1_answer == 3)
q1_correct = true;
q1_valid = true;
if (q1_answer == 4)
q1_correct = false;
q1_valid = true;
if (q1_valid == false)
cout << \"Invalid answer.\" <<endl;
goto Question_1;
if (q1_correct == true)
cout << \"Correct!\" <<endl;
(total_score + 1);
goto Question_2;
if (q1_correct == false)
cout << \"Incorrect.\" <<endl;
goto Question_2;
if (q1_valid == false)
goto Question_1;
Question_2:
cout<< \"Q2\" <<endl;
cin.ignore();
cin.ignore();
}
解决方法
我这里有一些提示:
如果...则是有条件的,不是循环。抱歉,这只是我有点挑剔。 ;)
永远,永远,永远,永远不要使用goto。高级用法:仅在有该死的正当理由时才使用goto。
测试布尔值时,不需要\“ == true \”或\“ == false \”。
看来您尚未学习如何使用else语句。这将使您的程序更易于阅读,调试和理解。
如上所述,支架也是必需的。
, 您需要使用方括号:
if (q1_valid == false) {
cout << \"Invalid answer.\" <<endl;
goto Question_1;
}
如果不使用方括号,则if
条件的条件为真时,if
仅执行紧随其后的第一条语句。
, if之后的语句没有括号,因此只有第一个条件语句是有条件的。在这种情况下,这意味着无论答案是什么,“ q1_valid = true; \”都会运行。
if (q1_answer == 4) {
q1_correct = false;
q1_valid = true;
}
您需要一个通过缩进显示此内容的编辑器。
例如,emacs将
, if语句的括号是必需的。
您是否考虑过使用switch语句:
switch (q1_answer){
case 1:
q1_correct = false;
q1_valid = true;
break;
case 2:
q1_correct = false;
q1_valid = true;
break;
case n:
//...
break;
}
, 不要忘记使用括号。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。