黑马程序员2024新版C++笔记 第2章 语句

发布于:2025-05-18 ⋅ 阅读:(19) ⋅ 点赞:(0)

1.if逻辑判断语句

 语法主体:

if(要执行的判断,结果是bool型){
    判断结果是true会执行的代码;
}

2.AI大模型辅助编程

在Clion中搜索并安装对应插件:

右上角齿轮点击后找到插件(TRONGYI LINGMA和IFLYCODE)安装后重启ide即可。

重启后会有通义登录引导,点击会跳转到阿里云账号登陆界面,可以直接登录或注册一个。点击右侧的图标就可以使用了。

不想写注释可以全选代码->右键->选择通义灵码->生成注释

生成后的代码选择“插入”即可完成当前代码的注释。

讯飞灵火类似的操作不再整理。

3.if逻辑判断语句练习

答案:

#include <iostream>
using namespace std;

int main() {
    // 提示用户输入年龄
    cout << "欢迎来到黑马儿童游乐场,儿童免费,成人收费!" << endl;
    cout << "请输入你的年龄:";

    int age;
    cin >> age;

    // 根据年龄判断并输出相应内容
    if (age < 18) {
        cout << "您未成年,免费游玩,欢迎您小朋友!" << endl;
    }
    cout << "祝您游玩愉快!!!" << endl;

    return 0;
}

4.if_else语句

程序判断语法:

if(条件判断)
{
    判断条件为true会执行的代码;
}
else(条件判断)
{
    判断结果为false会执行的代码;
}

5.if_else语句练习

#include <iostream>

using namespace std;

int main() {
    // 欢迎语
    cout << "欢迎来到黑马动物园。" << endl;
    cout << "请输入您的身高(cm):";

    int height; // 定义变量 height 用于存储用户输入的身高
    cin >> height; // 使用 cin 获取用户输入的身高

    // 根据身高判断并输出相应内容
    if (height > 120) {
        cout << "您的身高超出120cm,游玩需要购票10元。" << endl;
    } else {
        cout << "您的身高未超出120cm,可以免费游玩。" << endl;
    }
    cout << "祝您游玩愉快。" << endl;

    return 0;
}

6.else if语句

7.逻辑判断语句的嵌套

有很多场景不仅是多个并列条件,还会有满足前置条件才会有第二次判断的多层次需求。对于这种需求嵌套判断语句可以实现。

8.逻辑判断语句的嵌套练习

#include <iostream>
#include <cstdlib> // 用于 rand() 和 srand()
#include <ctime>   // 用于 time()

using namespace std;

int main() {
    // 1. 定义一个变量,数字类型,内容在 1~10 范围内
    int target;
    cin >> target;

    // 提供三次猜测的机会
    for (int i = 1; i <= 3; ++i) {
        int guess;
        cout << "请输入第 " << i << " 次猜测的数字(1~10):";
        cin >> guess;

        // 判断猜测是否正确
        if (guess == target) {
            cout << "第 " << i << " 次就猜对了。你真棒!" << endl;
            return 0; // 猜对了,程序结束
        } else {
            cout << "不对,请再猜一次。" << endl;
        }
    }

    // 如果三次都未猜对
    cout << "Sorry,全部猜错啦,我想的是:" << target << endl;

    return 0;
}

9.逻辑判断的综合案例

提示:随机数可通过C++中的random库得到。

将下方代码放置在main函数之前即可调用

#include<random>

//将下方代码放置于main()函数之前即可调用
int get_random_num(int min, int max)
{
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());

    //定义一个均匀分布的整数范围
    uniform_int_distribution<> dis(min, max);

    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;

}

随机数范围可通过调用函数的2个参数控制

int num = get_random_num(1,10);
#include <iostream>
#include<random>

using namespace std;

/*
 * 案例需求(填补页牌):
 * 随机产出3份信息:
 * 第一份信息:1~10的数字,代表扑克牌1~10
 * 第二份信息:字符串,红色或黑色,代表扑克牌的花色
 * 第三份信息:字符串,如果是红色产出红桃或方块,如果是黑色产出黑桃或梅花
 * 案例要求:
 * 通过该套判断,并结合判断语句猜测上述信息,如
 * 先猜数字,成功后猜颜色,再成功猜测具体的花型
 */

//将下方代码放置于main()函数之前即可调用
int get_random_num(int min, int max)
{
    //创建一个随机数生成器
    random_device rd;
    mt19937 gen(rd());

    //定义一个均匀分布的整数范围
    uniform_int_distribution<> dis(min, max);

    //生成一个随机数并输出
    int random_number = dis(gen);
    return random_number;

}

int main() {

    // 第一份信息:1~10的数字,代表扑克牌1~10
    int num = get_random_num(1,10);

    // 第二份信息:字符串,红色或黑色,代表扑克牌的花色
    string color = get_random_num(0,1) ? "红色" : "黑色";

    // 第三份信息:字符串,如果是红色产出红桃或方块,如果是黑色产出黑桃或梅花
    string suit;
    if (color == "红色") {
        suit = get_random_num(0,1) ? "红桃" : "方块" ;
    }
    else
        suit = get_random_num(0,1) ? "黑桃" : "梅花" ;

    //目前检查一下输出变量,没有问题
    cout << "数字:" << num << " 花色:" << color << " 花型:" << suit << endl;

    // 先猜数字,成功后猜花色,再成功后猜具体的花型
    int guess_num;
    cout << "请输入数字:" << endl;
    cin >> guess_num;
    if (guess_num == num) {
        // 数字猜对了要继续猜花色
        int guess_color;
        cout << "请猜测花色,红色输入1,黑色输入0:" << endl;
        cin >> guess_color;
        if ((guess_color ?  "红色" : "黑色") == color) {
            // 颜色猜对了
            int suit_num;

            if (color == "红色") {
                // 猜测是否是红桃还是方块
                cout << "请猜测花型,红桃输入1,方块输入0" <<  endl;
                cin >> suit_num;
                if ((suit_num ? "红桃" : "方块") == suit) {
                    cout << "花型正确,恭喜你游戏成功,游戏的花型是" << suit << endl;
                }else {
                    cout << "花型错误,游戏失败。正确的花型是: " << suit << endl;
                }

            }
            // 花色是黑色
            // 猜测是黑桃或梅花
            else{
                cout << "请猜测花型,黑桃输入1,梅花输入0" << endl;
                cin >> suit_num;
                if ((suit_num ? "黑桃" : "梅花") == suit){
                    cout << "花型正确,恭喜你游戏成功,游戏的花型是" << suit << endl;
                }else {
                    cout << "花型错误,游戏失败。正确的花型是: " << suit << endl;
                }
            }
        }// 颜色猜错了
        else cout << "花色错误,游戏结束" << endl;
    }
    else cout << "数字错误,游戏结束" << endl;
    return 0;
}

输出答案:

数字:5 花色:红色 花型:红桃
请输入数字:
5
请猜测花色,红色输入1,黑色输入0:
1
请猜测花型,红桃输入1,方块输入0
1
花型正确,恭喜你游戏成功,游戏的花型是红桃

10.基于逻辑运算符完成复杂判断

11.switch控制语句

switch控制语句适用于多条件判断的场景,它在功能上和if 、elseif功能一致,语法更简洁接。

switch仅做值匹配(相等判断)。break语句可以中断switch语句,否则向下执行其他case段(包括default段),直至执行完或遇到break为止。示例:

#include <iostream>
using namespace std;

int main()
{
    // 输入数字1-7 输出星期几
    int num;
    cout << "请输入数字来自知是星期几(1-7):" << endl;
    cin >> num;

    switch(num){
        case 1:
            cout << "今天是星期一" << endl;
            break;
        case 2:
            cout << "今天是星期二" << endl;
            break;
        case 3:
            cout << "今天是星期三" << endl;
            break;
        case 4:
            cout << "今天是星期四" << endl;
            break;
        case 5:
            cout << "今天是星期五" << endl;
            break;
        case 6:
            cout << "今天是星期六" << endl;
            break;
        case 7:
            cout << "今天是星期日" << endl;
            break;
        default:
            cout << "输入错误,请输入1-7之间的数字!" << endl;
    }

    return 0;
}

 老师还讲了break的巧妙(多重)用法:

  • case 一旦匹配成功,从该处开始执行后续语句,若未遇到 break,则会继续执行后续所有 case 的语句(称为“穿透”)。也就是说多个 case 可连续书写,不写语句或 break,共享同一段代码。例如9分和10分都是优秀可以写成case10:case9:cout<<"优秀"<<endl;break;

  • break 的作用是跳出 switch 语句,防止继续执行后续 case。

  • default 相当于“兜底选项”,不匹配任何 case 时执行。

12.枚举类型

枚举本质上是一个被命名的整型常数的集合。因为枚举可以将一些数字或字符串符号化,以此增强程序的可读性和可维护性。

枚举语法:

enum 枚举名{
    枚举元素1;
    枚举元素2;
    ...
    枚举元素n;
};    //分号不能省略

枚举类型每个元素都有整数标号,默认从0开始,以此类推。起始标号也可以自行设置,例如“

enum Season {
    spring = 3;
    summer;
    autumn;
    winter;
};

 从3开始递增,即:spring为3,sutumn为5,winter为6.示例:

#include <iostream>
using namespace std;

// 定义颜色枚举类型
enum Color {
    RED,     // 默认是0
    YELLOW,  // 默认是1
    BLUE     // 默认是2
};

int main() {
    int num;

    cout << "小朋友们你们喜欢什么颜色?0红色,1黄色,2蓝色" << endl;
    cin >> num;

    switch (num) {
        case RED:
            cout << "小朋友喜欢红色!" << endl;
            break;
        case YELLOW:
            cout << "小朋友喜欢黄色!" << endl;
            break;
        case BLUE:
            cout << "小朋友喜欢蓝色!" << endl;
            break;
        default:
            cout << "输入无效,请输入0、1或2。" << endl;
            break;
    }

    return 0;
}

13.while循环语句