我的 while 循环和 else if 循环不起作用
My while loops and else if loops don't work
我正在努力让这封信以适当的等级显示。然后我希望程序一遍又一遍地询问我的期中成绩和期末成绩。然后为该分数给出适当的分数,截至目前它只给我第一个 运行.
的分数
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int midterm;
int final;
cout << "please enter midterm grade: ";
cin >> midterm;
while (midterm < 0 || midterm > 200)
{
cout << "Please enter valid amount must be 0 or greater or 200 or less. please enter grade: ";
cin >> midterm;
}
cout << " please enter final grade: ";
cin >> final;
while (final < 0 || final > 200)
{
cout << "Please enter valid amount must be 0 or greater or 200 or less. Please enter grade";
cin >> final;
}
int total;
total = final + midterm;
cout << "total";
if (total > 360 || total <=400)
{
cout << "your letter grade is A";
}
else if (total > 320 || total < 359)
{
cout << "your letter grade is B";
}
else if (total > 280 || total < 319)
{
cout << "your letter grade is C";
}
else if (total > 279 || total < 241)
{
cout << "your letter grade is D";
}
else if (total < 240)
{
cout << "your letter is F";
}
}
修复了 if 语句中的一些逻辑错误和其他一些错误(解释在最后)。我希望这个修改后的代码完成所需的任务:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int midterm=0;
int final=0;
cout << "please enter midterm grade: ";
cin >> midterm;
while (midterm < 0 || midterm > 200)
{
cout << "Please enter valid amount must be 0 or greater or 200 or less. please enter grade: ";
cin >> midterm;
}
cout << "please enter final grade: ";
cin >> final;
while (final < 0 || final > 200)
{
cout << "Please enter valid amount must be 0 or greater or 200 or less. Please enter grade";
cin >> final;
}
int total;
total = final + midterm;
cout << "total: "<<total << endl;
if (total > 360 && total <= 400)
{
cout << "your letter grade is A";
}
else if (total > 320 && total <= 360)
{
cout << "your letter grade is B";
}
else if (total > 280 && total <= 320)
{
cout << "your letter grade is C";
}
else if (total > 240 && total <= 280)
{
cout << "your letter grade is D";
}
else if (total <= 240)
{
cout << "your letter is F";
}
}
示例输出:
please enter midterm grade: 100
please enter final grade: 150
total: 250
your letter grade is D
为了解释,我没有做太多,我只是将 if 语句中的 ||
替换为 &&
并且还修改了值,以便不遗漏任何值并更改 cout << "total"
到 cout << "total: "<<total << endl;
以便它显示输出并在下一行打印下一个输出(等级),我还用 0
初始化了变量
如评论中所述,您需要使用&& 运算符而不是||。
||表示如果我的任何一方为真,则整个表达式为真。
意思是:
(true || true) => true. (true || false) => true. (false || true) => true.
所以现在让我们以 if else 语句中的第一个表达式为例,总数为 1 并计算该表达式。
(total > 360 || total <=400)
(1 > 360 || 1 <= 400)
(false || true)
(true)
这不是预期的行为,因为您想要这两个值之间的数字,让我们用 && 交换它,这要求双方都为真才能被评估为真。
(total > 360 && total <=400)
(1 > 360 && 1 <= 400)
(false && true)
(false)
这就是您尝试实现的目标,否则程序将继续执行下一个。
我正在努力让这封信以适当的等级显示。然后我希望程序一遍又一遍地询问我的期中成绩和期末成绩。然后为该分数给出适当的分数,截至目前它只给我第一个 运行.
的分数#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int midterm;
int final;
cout << "please enter midterm grade: ";
cin >> midterm;
while (midterm < 0 || midterm > 200)
{
cout << "Please enter valid amount must be 0 or greater or 200 or less. please enter grade: ";
cin >> midterm;
}
cout << " please enter final grade: ";
cin >> final;
while (final < 0 || final > 200)
{
cout << "Please enter valid amount must be 0 or greater or 200 or less. Please enter grade";
cin >> final;
}
int total;
total = final + midterm;
cout << "total";
if (total > 360 || total <=400)
{
cout << "your letter grade is A";
}
else if (total > 320 || total < 359)
{
cout << "your letter grade is B";
}
else if (total > 280 || total < 319)
{
cout << "your letter grade is C";
}
else if (total > 279 || total < 241)
{
cout << "your letter grade is D";
}
else if (total < 240)
{
cout << "your letter is F";
}
}
修复了 if 语句中的一些逻辑错误和其他一些错误(解释在最后)。我希望这个修改后的代码完成所需的任务:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int midterm=0;
int final=0;
cout << "please enter midterm grade: ";
cin >> midterm;
while (midterm < 0 || midterm > 200)
{
cout << "Please enter valid amount must be 0 or greater or 200 or less. please enter grade: ";
cin >> midterm;
}
cout << "please enter final grade: ";
cin >> final;
while (final < 0 || final > 200)
{
cout << "Please enter valid amount must be 0 or greater or 200 or less. Please enter grade";
cin >> final;
}
int total;
total = final + midterm;
cout << "total: "<<total << endl;
if (total > 360 && total <= 400)
{
cout << "your letter grade is A";
}
else if (total > 320 && total <= 360)
{
cout << "your letter grade is B";
}
else if (total > 280 && total <= 320)
{
cout << "your letter grade is C";
}
else if (total > 240 && total <= 280)
{
cout << "your letter grade is D";
}
else if (total <= 240)
{
cout << "your letter is F";
}
}
示例输出:
please enter midterm grade: 100 please enter final grade: 150 total: 250 your letter grade is D
为了解释,我没有做太多,我只是将 if 语句中的 ||
替换为 &&
并且还修改了值,以便不遗漏任何值并更改 cout << "total"
到 cout << "total: "<<total << endl;
以便它显示输出并在下一行打印下一个输出(等级),我还用 0
如评论中所述,您需要使用&& 运算符而不是||。
||表示如果我的任何一方为真,则整个表达式为真。
意思是:
(true || true) => true. (true || false) => true. (false || true) => true.
所以现在让我们以 if else 语句中的第一个表达式为例,总数为 1 并计算该表达式。
(total > 360 || total <=400)
(1 > 360 || 1 <= 400)
(false || true)
(true)
这不是预期的行为,因为您想要这两个值之间的数字,让我们用 && 交换它,这要求双方都为真才能被评估为真。
(total > 360 && total <=400)
(1 > 360 && 1 <= 400)
(false && true)
(false)
这就是您尝试实现的目标,否则程序将继续执行下一个。