都选c吉他教学:所有if语句都执行c++(c++ if statements)

我正在制作一个程序,让用户插入一个等级,该程序将根据该等级显示一条消息。

由于某种原因,if 语句都被执行,我不知道为什么会发生。

这是我的代码:

#include <iostream>
#include <random>
using namespace std;
int main()
{
 string ques;
cout << "Hello would you like to insert a letter grade or a number grade?\n";
cin >> ques;
    if (ques=="letter")
    {
        char grade;
        cout <<"Enter your grade: ";
        cin >> grade;
        switch (grade)
        {
            case 'F' :
                cout << "You should start revising!"<<endl;
                break;
            case 'D':
                cout <<"You can do better!"<<endl;
                break;
            case 'C':
                cout<<"Improvement is possible!"<<endl;
                break;
            case 'B':
                cout <<"You`re getting there , keep it up!"<<endl;
                break;
            case 'A':
                cout <<"Congratulations! See?? Your hard work payed off!"<<endl;
                break;
        }
    return 0;
    }
    else
    {
        int nrGrade;
        cout <<"Enter your grade: ";
        cin >> nrGrade;
        if (nrGrade >=0 && nrGrade <= 59)
        {
            cout <<"Your grade is an F. You should start revising!"<<endl;
        }
        else (nrGrade >= 60 && nrGrade <= 69);
        {
        cout <<"Your grade is a D. I`m sure you can do better!"<<endl;
        }
        if (nrGrade >= 70 && nrGrade <=79)
        {
        cout <<"Your grade is a C. I`m sure you can improve!"<<endl;
        }
        else (nrGrade >= 80 && nrGrade <=89);
        {
        cout <<"Your grade is a B. You`re getting there , keep it up!"<<endl;
        }
        if (nrGrade >= 90 && nrGrade <= 100)
        {
            cout <<"Your grade is an A. Congratulations for your grade! Keep it up!"<<endl;
        }
        return 0;
    }
}

我正在使用 codeblocks,因为我在 visual studio 中有一些问题。任何人都知道为什么会发生这种情况?

3
if (nrGrade >=0 && nrGrade <= 59)
{
    cout <<"Your grade is an F. You should start revising!"<<endl;
}
else (nrGrade >= 60 && nrGrade <= 69);
{
    cout <<"Your grade is a D. I`m sure you can do better!"<<endl;
}

这里的部分(nrGrade >= 60 && nrGrade <= 69);被认为是 else 语句的指令,因为尾随的;,并且因为else不接受条件作为参数。记住if-statement的语法是:

if( condition )
    statement-true
else
    statement-false

当你试图写:

if( condition1 )
    statement-true
else( condition2 );
    statement-false

然后执行以下带有cout的块,因为它与您的 if / else 无关。

事实上,你的代码相当于:

if (nrGrade >=0 && nrGrade <= 59)
{
    cout <<"Your grade is an F. You should start revising!"<<endl;
}
else
{
    nrGrade >= 60 && nrGrade <= 69;
}
cout <<"Your grade is a D. I`m sure you can do better!"<<endl;

我认为你想要的逻辑更多:

if (nrGrade >=0 && nrGrade <= 59)
{
    cout <<"Your grade is an F. You should start revising!"<<endl;
}
else
{
    if (nrGrade >= 60 && nrGrade <= 69)
    {
        cout <<"Your grade is a D. I`m sure you can do better!"<<endl;
    }
}

可以这样写:

if (nrGrade >=0 && nrGrade <= 59)
{
    cout <<"Your grade is an F. You should start revising!"<<endl;
}
else if (nrGrade >= 60 && nrGrade <= 69)
{
    cout <<"Your grade is a D. I`m sure you can do better!"<<endl;
}

这里第二个if用作else的语句,形成伪关键字else if,语法如下:

if( condition1 )
    statement1
else if( condition2 )
    statement2
else
    default-statement

顺便说一句,当 if 和 else 块以相同的指令结束时,你可能想要提取它。

int main()
{
    // ...
    if (ques=="letter")
    {
        // ...
        return 0;
    }
    else
    {
        // ...
        return 0;
    }
}

应该是:

int main()
{
    // ...
    if (ques=="letter")
    {
        // ...
    }
    else
    {
        // ...
    }
    return 0;
}
0

错误的 if-else 实现。

应该是

if(condition1) {
    //do something
}
else if (condition2) {
    //do something else
}
else
{
    //do other stuff
}

例如:

if (nrGrade >=0 && nrGrade < 60)
{...
}
else if (nrGrade >= 60 && nrGrade < 70)
{...
}
else if (nrGrade >= 70 && nrGrade < 80)
{...
}
else if (nrGrade >= 80 && nrGrade < 90)
{...
}
else if (nrGrade >= 90 && nrGrade <= 100)
{...
}
else
{
cout << "ERROR"
}

否则不需要输入,所以你正在写的比较,后面跟着一个 ';',被认为是一个指令。

最好的

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(480)
C本多久可以增驾b本:我可以用“三驾马车-三文本”创建 3D文本吗
上一篇
学习编程教程:Q学习教程混淆(how to confuse machine learning)
下一篇

相关推荐

  • cvt变速箱结构图解:CVT变速箱的工作原理

    CVT变速箱是一种无级变速箱,它的结构由两个部分组成:输入轴和输出轴。输入轴由发动机驱动,输出轴将变速箱的输出转移到车轮上。输入轴上安装有一个可变的滑轮,它可以改变输入轴的传动比,从而改变变速箱的输出比。另外,输入轴上还安装有一个液压系统,它可以控制滑轮的位置,从而改变输入轴的传动比。…

    2023-04-02 04:00:04
    0 18 35
  • xcode代码格式化快捷键:使用Command + I快速格式化Xcode代码

    格式化的方法格式化的方法Xcode代码格式化快捷键:Option+Command+F…

    2023-07-13 12:44:06
    0 71 23
  • cv树洞柒夜事件CV树洞中的秘密与惊奇

    cv树洞柒夜事件是一个有趣的计算机视觉活动,它提供了一种新的方式来利用计算机视觉技术来探索和发现景观。它始于2020年7月,由一群热爱计算机视觉的研究者和开发者发起,他们希望通过使用机器学习技术来探索景观中的精彩之处。cv树洞柒夜事件的目标是使用机器学习技术来探索景观中的精彩之处,并利用这些发现来改善景观设计。参与者需要使用机器学习技术来探索景观,并利用这些发现来改善景观设计。参与者可以使用Python,OpenCV,TensorFlow等技术来完成任务,并将其发布在GitHub上。…

    2023-01-09 12:42:42
    0 20 26
  • win10怎么cmd打开设置:如何在Windows 10中使用CMD打开设置

    打开“开始”菜单,点击搜索框,输入cmd,然后按下回车键。在弹出的命令提示符窗口中,输入以下代码:start ms-:…

    2023-06-07 01:59:36
    0 95 94
  • java protected关键字:使用protected关键字保护类成员的优点

    示例示例关键字是java中的修饰符,它可以修饰类、变量和方法。修饰类:修饰的类只能在同一个包内被访问,如果子类继承了修饰的父类,则子类可以在不同包内访问父类的成员。…

    2023-04-18 04:45:37
    0 21 77
  • codeblocks手机版下载一款强大的跨平台编程工具

    CodeBlocks是一款免费的、开源的、跨平台的C/C++ IDE,支持多种编程语言,可以用来编写、调试和编译代码。目前CodeBlocks的手机版本只支持Android系统,而且只支持C语言,不支持C++。…

    2023-06-25 04:48:50
    0 47 74
  • go和come的区别:去吧!来吧!改变你的未来

    示例示例go和come的区别:Go是一个动词,表示“去”的意思,指的是从一个地方到另一个地方的运动。Come是一个动词,表示“来”的意思,指的是从另一个地方到当前地方的运动。…

    2023-05-25 16:09:00
    0 25 80
  • cascode放大器:如何利用Cascode放大器实现高精度的信号放大

    Cascode放大器是一种由两个晶体管或三极管组成的电路,它可以提高放大器的增益,并减少其输入阻抗和输出阻抗。它的工作原理是,上游晶体管将输入信号放大,然后下游晶体管将放大的信号再次放大。这样,放大器的增益就会更大,而输入阻抗和输出阻抗也会降低。…

    2023-05-22 02:13:09
    0 42 32

发表评论

登录 后才能评论

评论列表(79条)