C++ if-else if Issues

use*_*771 -3 c++ if-statement

我在下面的程序中遇到问题.它应该将1-100之间的数字转换为AA,BA,BB,CB,CC,D,F.但是如果我输入的数字少于84,它就会停止工作并显示"BA".我检查了代码.但我不明白这是什么问题.

#include <iostream>
using namespace std;

int main() {
    int secenek,notu;
    cout << "Not Dönü?türücü" << endl;
    cout<<"Ba?lamak için 1'e bas?n:\n";
    cin>>secenek;

    if (secenek==1)
        {
        cout<<"Dönü?türülecek not: ";
        cin>>notu;
        }
        if (notu<0 || notu>100)
            {
            cout<<"Geçerli bir not girin.\n";
            }
        else if (notu>=90)
            {
            cout<<"AA";
            }
        else if (notu<90 || notu>84)
            {
            cout<<"BA";
            }
        else if (notu<85 || notu>79)
            {
            cout<<"BB";
            }
        else if (notu<80 || notu>74)
            {
            cout<<"CB";
            }
        else if (notu<75 || notu>69)
            {
            cout<<"CC";
            }
        else if (notu<70 || notu>59)
            {
            cout<<"D";
            }
        else if (notu<60)
            {
            cout<<"F";
            }
        }
Run Code Online (Sandbox Code Playgroud)

Chr*_*aes 6

你犯了一个逻辑错误:

else if (notu<90 || notu>84)
Run Code Online (Sandbox Code Playgroud)

应该

else if (notu<90 && notu>84)
Run Code Online (Sandbox Code Playgroud)

以下所有情况都是如此.

编辑为@ Jarod42建议; 你甚至不需要再检查notu<90......你的代码看起来像这样:

if (notu<0 || notu>100)
    {
    cout<<"Geçerli bir not girin.\n";
    }
else if (notu>=90)
    {
    cout<<"AA";
    }
else if (notu>84)
    {
    cout<<"BA";
    }
else if (notu>79)
    {
    cout<<"BB";
    }
etc...
Run Code Online (Sandbox Code Playgroud)