我的 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)

这就是您尝试实现的目标,否则程序将继续执行下一个。