21.if

21.条件分支语句-if


21.1 知识点

条件分支语句的作用

让顺序执行的代码产生分支。if语句是第一个可以让程序产生逻辑变化的语句。

if语句

作用:满足条件时多执行一些代码。

语法

if (bool类型值 或 数值类型) {
    满足条件要执行的代码;
}

注意

  • if语句的语法部分不需要写分号。
  • if语句可以嵌套使用。

示例代码

if (true) {
    cout << "满足条件执行的内容" << endl;
}

cout << "if后面的内容" << endl;

int a = 1;
if (a > 0 && a < 5) {
    cout << "a在0和5之间" << endl;
}

string name = "韬老狮";
string password = "666";
if (name == "韬老狮" && password == "666") {
    cout << "登录成功" << endl;
}

if (name == "韬老狮") {
    cout << "用户名验证成功" << endl;
    if (password == "666") {
        cout << "登录成功" << endl;
    }
}

// 如果if语句满足条件后,后面只有一行需要执行的代码,可以省略大括号
if (false)
    cout << "一行代码" << endl;

if…else语句

作用:产生两条分支,满足条件做什么,不满足条件做什么。

语法

if (bool类型值 或 数值类型) {
    满足条件执行的代码;
} else {
    不满足条件执行的代码;
}

注意

  • if...else语句的语法部分不需要写分号。
  • if...else语句可以嵌套。

示例代码

if (true) {
    cout << "满足条件" << endl;
    if (false) {
        cout << "2满足条件" << endl;
    } else {
        cout << "2不满足条件" << endl;
    }
} else {
    cout << "不满足条件" << endl;
    if (false) {
        cout << "满足条件" << endl;
    } else {
        cout << "不满足条件" << endl;
    }
}

cout << "后面的代码" << endl;

if…else if…else 语句

作用:产生多条分支,多条道路选择,最先满足其中一个条件时执行对应代码。

语法

if (bool类型值 或 数值类型) {
    满足条件执行的代码;
} else if (bool类型值 或 数值类型) {
    满足条件执行的代码;
}
// ...中间可以有n个 else if语句代码块
else {
    不满足条件执行的代码;
}

注意

  1. if...else if...else语句不需要写分号。
  2. 可以嵌套使用。
  3. else是可以省略的。
  4. 条件判断从上到下依次执行,满足第一个条件后,后续条件将不再执行。

示例代码

int a2 = 6;
if (a2 >= 10) {
    cout << "a2是大于10的" << endl;
} else if (a2 > 5 && a2 < 10) {
    cout << "a2在5到10之间" << endl;
} else if (a2 >= 0 && a2 <= 5) {
    cout << "a2在0到5之间" << endl;
} else {
    cout << "a2小于0" << endl;
}

// if语句相关:if, if...else, if...else if...else
// else if 和 else 是可以选择的,根据实际情况组合使用即可。

21.2 知识点代码

Lesson21_条件分支语句_if.cpp

#include <iostream>
using namespace std;
int main()
{
    std::cout << "if语句\n";

    #pragma region 知识点一 条件分支语句的作用

    //让顺序执行的代码 产生分支
    //if语句是第一个 可以让我们的程序 产生逻辑变化的 语句

    #pragma endregion

    #pragma region 知识点二 if语句

    //作用: 满足条件时 多执行一些代码
    //语法:
    // if( bool类型值 或 数值类型 )  // bool类型相关:bool变量 关系运算符表达式 逻辑运算符表达式
    // {
    //     满足条件要执行的代码 写在if代码块中;
    // }
    // 注意:
    // 1.if语句的语法部分, 不需要写分号
    // 2.if语句可以嵌套使用

    if (true)
    {
        //满足条件就会执行其中的内容
        cout << "满足条件执行的内容" << endl;
        cout << "满足条件执行的内容" << endl;
        cout << "满足条件执行的内容" << endl;
        cout << "满足条件执行的内容" << endl;
    }
    cout << "if后面的内容" << endl;

    int a = 1;
    if (a > 0 && a < 5)
    {
        cout << "a在0和5之间" << endl;
    }

    string name = "韬老狮";
    string password = "666";
    if (name == "韬老狮" && password == "666")
    {
        cout << "登录成功" << endl;
    }

    if (name == "韬老狮")
    {
        cout << "用户名验证成功" << endl;
        if (password == "666")
        {
            cout << "登录成功" << endl;
        }
    }

    //如果if语句满足条件后 后面只有一行需要执行的代码
    //那么我们可以省略大括号
    if (false)
        cout << "一行代码" << endl;

    #pragma endregion

    #pragma region 知识点三 if...else语句

    // 作用:
    // 产生两条分支 分岔路口 满足条件做什么 不满足条件做什么

    //语法:
    // if( bool类型值 或 数值类型 )
    // {
    //      满足条件执行的代码;
    // }
    // else
    // {
    //      不满足条件执行的代码:
    // }
    // 注意:
    // 1.if ...else 语句 语法部分 不需要写分号
    // 2.if ...else 语句 可以嵌套

    if (true)
    {
        //满足条件执行的内容
        cout << "满足条件" << endl;

        if (false)
        {
            //满足条件执行的内容
            cout << "2满足条件" << endl;
        }
        else
        {
            //不满足条件执行的内容
            cout << "2不满足条件" << endl;
        }
    }
    else
    {
        //不满足条件执行的内容
        cout << "不满足条件" << endl;

        if (false)
        {
            //满足条件执行的内容
            cout << "满足条件" << endl;
        }
        else
        {
            //不满足条件执行的内容
            cout << "不满足条件" << endl;
        }
    }
    cout << "后面的代码" << endl;

    #pragma endregion

    #pragma region 知识点四 if...else if...else 语句

    //作用:
    // 产生n条分支 多条道路选择 最先满足其中的一个条件 就做什么

    // 语法:
    // if( bool类型值 或 数值类型 )
    // {
    //      满足条件执行的代码;
    // }
    // else if( bool类型值 或 数值类型 )
    // {
    //      满足条件执行的代码;
    // }
    // ...中间可以有n个 else if语句代码块
    // else
    // {
    //      不满足条件执行的代码:
    // }

    // 注意:
    // 1. 和前面两个是一样的 不需要写分号
    // 2. 是可以嵌套的
    // 3. else 是可以省略的
    // 4. 注意 条件判断 从上到下执行 满足了第一个后 之后的都不会执行了

    int a2 = 6;
    if (a2 >= 10)
    {
        cout << "a2是大于10的" << endl;
    }
    else if (a2 > 5 && a2 < 10)
    {
        cout << "a2在5到10之间" << endl;
    }
    else if (a2 >= 0 && a2 <= 5)
    {
        cout << "a2在0到5之间" << endl;
    }
    //else 是可以省略的
    else
    {
        cout << "a2小于0" << endl;
    }

    //if语句相关 if  if...else   if...else if ...else if ...n个 ... else
    //else if 和 else 是可以选择的 是可以进行组合使用的 
    //根据实际情况去选择就可以了

    #pragma endregion
}

21.3 练习题

请用户输入今日看韬老狮视频花了多少分钟,如果大于60分钟,那么在控制台输出“今天看视频花了XX分钟,看来你离成功又进了一步!”

cout << "请用户输入今日看韬老狮视频花了多少分钟" << endl;
try
{
    string str;
    cin >> str;
    int time = stoi(str);
    if (time >= 60)
    {
        cout << "今天看视频花了" + str + "分钟,看来你离成功又进了一步!" << endl;
    }
    else
    {
        cout << "你还需努力" << endl;
    }
}
catch (const std::exception&)
{
    cout << "请输入正确格式的时间" << endl;
}

输入语文、数学、英语成绩

满足以下任意条件,则输出“非常棒,继续加油”:

  • 语文成绩大于70且数学成绩大于80且英语成绩大于90
  • 语文成绩等于100或者数学成绩等于100或者英语成绩等于100
  • 语文成绩大于90且其他两门中有一门成绩大于70
try
{
    string str;
    cout << "请输入语文成绩" << endl;
    cin >> str;
    int yuwen = stoi(str);
    cout << "请输入数学成绩" << endl;
    cin >> str;
    int shuxue = stoi(str);
    cout << "请输入英语成绩" << endl;
    cin >> str;
    int yingyu = stoi(str);

    bool b1 = yuwen > 70 && shuxue > 80 && yingyu > 90;
    bool b2 = yuwen == 100 || shuxue == 100 || yingyu == 100;
    bool b3 = yuwen > 90 && (shuxue > 70 || yingyu > 70);

    if (b1 || b2 || b3)
    {
        cout << "非常棒,继续加油" << endl;
    }
}
catch (const std::exception&)
{
    cout << "请输入正确的数字,不能是小数" << endl;
}

定义变量存储小赵的考试成绩,如果成绩大于(含)90分,则爸爸奖励100元,否则一个月不能玩游戏。

int cj = 90;
if (cj >= 90)
    cout << "爸爸奖励100元" << endl;
else
    cout << "一个月不能玩游戏" << endl;

输入两个数 ab,如果两数可以整除或加起来大于100,则输出 a 的值,否则输出 b 的值。

try
{
    cout << "请输入一个数" << endl;
    string str;
    cin >> str;
    int a = stoi(str);
    cout << "请再输入一个数" << endl;
    cin >> str;
    int b = stoi(str);

    bool b1 = a % b == 0 || b % a == 0;
    bool b2 = a + b > 100;

    if (b1 || b2)
        cout << a << endl;
    else
        cout << b << endl;
}
catch (const std::exception&)
{
    cout << "请输入数字" << endl;
}

输入一个整数,如果是偶数则打印 “Your input is even”,否则打印 “Your input is odd”。

try
{
    cout << "请输入一个数" << endl;
    string str;
    cin >> str;
    int i = stoi(str);
    if (i % 2 == 0)
        cout << "Your input is even" << endl;
    else
        cout << "Your input is odd" << endl;
}
catch (const std::exception&)
{
}

输出三个整形变量中的最大值

int a = 500, b = 110, c = 25;
if (a > b && a > c)
    cout << "最大的值是a" << endl;
else if (b > a && b > c)
    cout << "最大的值是b" << endl;
else
    cout << "最大的值是c" << endl;

接受用户输入的字符,如果是 0~9 的数字则显示“您输入了一个数字”,否则显示“这不是一个数字”。

cout << "请输入一个字符" << endl;
char c;
cin >> c;

int begin = '0';
int end = '9';
int askII = c;
if (askII >= begin && askII <= end)
    cout << "输入的是一个数字" << endl;
else
    cout << "你输入的不是数字" << endl;

用户名和密码验证

  • 用户名是 admin 且密码是 8888 则提示成功
  • 用户名错误提示“用户名不存在”,否则提示“密码错误”
try
{
    cout << "请输入用户名" << endl;
    string name;
    cin >> name;
    cout << "请输入密码" << endl;
    string password;
    cin >> password;

    if (name == "admin" && password == "8888")
    {
        cout << "登录成功" << endl;
    }
    else
    {
        if (name != "admin")
        {
            cout << "用户名不存在" << endl;
        }
        else
        {
            cout << "密码错误" << endl;
        }
    }
}
catch (const std::exception&)
{
}

根据年龄提供访问权限

try
{
    cout << "请输入你的年龄" << endl;
    string str;
    cin >> str;
    int age = stoi(str);

    if (age >= 18)
        cout << "你可以看" << endl;
    else if (age >= 13 && age < 18)
    {
        cout << "是否继续查看(yes、no)" << endl;
        cin >> str;
        if (str == "yes")
            cout << "请查看" << endl;
        else
            cout << "退出" << endl;
    }
    else
        cout << "年龄不够,不能查看" << endl;
}
catch (const std::exception&)
{
    cout << "请输入数字" << endl;
}

以下代码的打印结果

int a = 5;
if (a > 3)
{
    int b = 0;
    ++b;
    b += a;
}
cout << b << endl; // 报错,未声明变量 b

解析:变量 b 的作用域仅限于 if 语句块内,因此在块外引用 b 会导致编译错误。


21.4 练习题代码

Lesson21_练习题.cpp

#include <iostream>
#include <string>
using namespace std;
int main()
{
    std::cout << "if语句练习题\n";

    #pragma region 练习题一

    //请用户输入今日看韬老狮视频花了多少分钟,如果大于60分钟,
    //那么在控制台输出“今天看视频花了XX分钟,看来你离成功又进了一步!”

    //打印输入 —— cout cin
    //判断 —— 逻辑运算符 关系运算 算术运算符
    //判断就可能产生分支 —— if else if  else
    cout << "请用户输入今日看韬老狮视频花了多少分钟" << endl;
    try
    {
        string str;
        cin >> str;
        int time = stoi(str);
        if (time >= 60)
        {
            cout << "今天看视频花了" + str + "分钟,看来你离成功又进了一步!" << endl;
        }
        else
        {
            cout << "你还需努力" << endl;
        }
    }
    catch (const std::exception&)
    {
        cout << "请输入正确格式的时间" << endl;
    }

    #pragma endregion

    #pragma region 练习题二

    /*请输入你的 语文,数学,英语成绩,满足以下任意条件,则输出“非常棒,继续加油”
    语文成绩大于70 并且 数学成绩大于80 并且英语成绩大于90
    语文成绩等于100或者数学成绩等于100或者英语成绩等于100
    语文成绩大于90 并且 其它两门中有一门成绩大于70*/

    try
    {
        string str;
        cout << "请输入语文成绩" << endl;
        cin >> str;
        int yuwen = stoi(str);
        cout << "请输入数学成绩" << endl;
        cin >> str;
        int shuxue = stoi(str);
        cout << "请输入英语成绩" << endl;
        cin >> str;
        int yingyu = stoi(str);

        //语文成绩大于70 并且 数学成绩大于80 并且英语成绩大于90
        bool b1 = yuwen > 70 && shuxue > 80 && yingyu > 90;
        //语文成绩等于100或者数学成绩等于100或者英语成绩等于100
        bool b2 = yuwen == 100 || shuxue == 100 || yingyu == 100;
        //语文成绩大于90 并且 其它两门中有一门成绩大于70
        bool b3 = yuwen > 90 && (shuxue > 70 || yingyu > 70);

        if (b1 || b2 || b3)
        {
            cout << "非常棒,继续加油" << endl;
        }
    }
    catch (const std::exception&)
    {
        cout << "请输入正确的数字,不能是小数" << endl;
    }

    #pragma endregion

    #pragma region 练习题三

    //定义一个变量,存储小赵的考试成绩,如果小赵的考试成绩大于(含)90分,
    //那么爸爸奖励100元钱,否则一个月不能玩游戏

    int cj = 90;
    if (cj >= 90)
        cout << "爸爸奖励100元" << endl;
    else
        cout << "一个月不能玩游戏" << endl;

    #pragma endregion

    #pragma region 练习题四

    //要求用户输入两个数a、b,如果两个数可以整除或者这两个数加起来大于100,则输出a的值,否则输出b的值

    //try
    //{
    //    cout << "请输入一个数" << endl;
    //    string str;
    //    cin >> str;
    //    int a = stoi(str);
    //    cout << "请再输入一个数" << endl;
    //    cin >> str;
    //    int b = stoi(str);

    //    //两个数可以整除
    //    bool b1 = a % b == 0 || b % a == 0;
    //    //两个数加起来大于100
    //    bool b2 = a + b > 100;

    //    if (b1 || b2)
    //        cout << a << endl;
    //    else
    //        cout << b << endl;
    //}
    //catch (const std::exception&)
    //{
    //    cout << "请输入数字" << endl;
    //}

    #pragma endregion

    #pragma region 练习题五

    //输入一个整数,如果这个数是偶数,则打印“Your input is even”,否则打印“Your input is odd”

    try
    {
        cout << "请输入一个数" << endl;
        string str;
        cin >> str;
        int i = stoi(str);
        //能被2整除 就是偶数
        if (i % 2 == 0)
            cout << "Your input is even" << endl;
        else
            cout << "Your input is odd" << endl;
    }
    catch (const std::exception&)
    {

    }

    #pragma endregion

    #pragma region 练习题六

    //有3个整形变量,分别存储不同的值,编写代码输出其中最大的整数

    //int a = 500, b = 110, c = 25;
    //if (a > b && a > c)
    //    cout << "最大的值是a" << endl;
    //else if (b > a && b > c)
    //    cout << "最大的值是b" << endl;
    //else
    //    cout << "最大的值是c" << endl;

    #pragma endregion

    #pragma region 练习题七

    //写一个程序接受用户输入的字符,如果输入的字符是0~9数字中的一个,
    //则显示“您输入了一个数字”,否则显示这不是一个数字

    cout << "请输入一个字符" << endl;
    char c;
    cin >> c;
    //相当于将字符转换为对应的ASKII码 然后判断码的范围
    int begin = '0';
    int end = '9';
    int askII = c;
    if (askII >= begin && askII <= end)
        cout << "输入的是一个数字" << endl;
    else
        cout << "你输入的不是数字" << endl;

    #pragma endregion

    #pragma region 练习题八

    //提示用户输入用户名,然后再提示输入密码,如果用户名是“admin”,并且密码是"8888",
    //则提示正确,否则,如果用户名不是admin还提示用户用户名不存在,如果用户名是admin则提示密码错误

    try
    {
        cout << "请输入用户名" << endl;
        string name;
        cin >> name;
        cout << "请输入密码" << endl;
        string password;
        cin >> password;
        if (name == "admin" && password == "8888")
        {
            cout << "登录成功" << endl;
        }
        else
        {
            if (name != "admin")
            {
                cout << "用户名不存在" << endl;
            }
            else
            {
                cout << "密码错误" << endl;
            }
        }
    }
    catch (const std::exception&)
    {

    }

    #pragma endregion

    #pragma region 练习题九

    //提示用户输入年龄,如果大于等于18,则告知用户可以查看,如果小于13岁,则告知不允许查看,
    //如果大于等于13并且小于18,则提示用户是否继续查看(yes、no),如果输入的是yes则提示用户请查看,
    //否则提示“退出”。

    try
    {
        cout << "请输入你的年龄" << endl;
        string str;
        cin >> str;
        int age = stoi(str);
        if (age >= 18)
            cout << "你可以看" << endl;
        else if (age >= 13 && age < 18)
        {
            cout << "是否继续查看(yes、no)" << endl;
            cin >> str;
            if (str == "yes")
                cout << "请查看" << endl;
            else
                cout << "退出" << endl;
        }
        else
            cout << "年龄不够,不能查看" << endl;
    }
    catch (const std::exception&)
    {
        cout << "请输入数字" << endl;
    }

    #pragma endregion

    #pragma region 练习题十

    /*请说明以下代码的打印结果(不要打一遍代码,请直接通过阅读说出结果)
    int a = 5;
    if (a > 3)
    {
        int b = 0;
        ++b;
        b += a;
    }
    cout << b << endl;*/

    //语句块外部声明的变量 可以在下面语句块内使用
    int a = 5;
    if (a > 3)
    {
        //语句块决定了 变量的生命周期 如果你在内部语句块中声明的变量
        //是不能够在这个语句块外使用的
        //内部语句块声明的内容 就不能拿出去用了
        int b = 0;
        ++b;
        b += a;
    }
    //cout << b << endl;//报错 未声明 

    #pragma endregion
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏