Files
cpp-courseware/2.Course/1.深入浅出程序设计竞赛(基础篇)/1.语言入门/第3章 分支结构程序设计/第三章 分支结构综合 模拟卷.md
T

9.5 KiB
Raw Blame History

C++ 分支结构综合 练习题

姓名:__________ 成绩:__________

一、 填空题 (每空 2 分,共 14 分)

  1. 在 switch 语句中,如果所有 case 标签都未匹配成功,程序将执行 _____________ 标签后的代码(如果存在)。
  2. 要在一个 if 或者 else 代码块中执行多条指令,必须使用一对 _____________ 将它们包裹起来。
  3. 在 switch(c) 语句中,变量c的类型不能是 double 或者 _____________ 类型。
  4. 要判断一个年份 year 是“闰年”(能被4整除但不能被100整除,或者能被400整除),其完整的 C++ 逻辑表达式为 ________________________________________________________________________________________。
  5. 在C++中,用于判断“不等于”的关系运算符是 _____________。
  6. if-else if-else 结构特别适合用于处理多个互斥的条件分支,当其中某一个条件满足后,其余的 _____________ 将不会再被判断。
  7. 表达式 x > 10 的逻辑非形式是 !(__________________)。

二、 单项选择题 (每题 2 分,共 20 分)

( ) 1. C++ 中用于从键盘读取用户输入的工具是? A. cout B. main C. cin D. return

( ) 2. 根据年龄 age 来决定不同的票价:儿童(<12岁)半价,老人(>=60岁)7折,其他人全价。这个逻辑最适合用什么结构实现? A. 顺序执行 B. if...else if...else C. 单个 if D. switch

( ) 3. switch 语句的括号里,不可以放入哪种类型的变量? A. int B. char C. bool D. double

( ) 4. 对于 switch 语句,下列说法正确的是? A. default 语句是必须的 B. case 后面可以跟一个变量,如 case x: C. break 的作用是防止穿透到下一个 case D. switch 语句可以判断一个浮点数的范围

( ) 5. 如果有定义 int score = 85;,表达式 score >= 60 && score < 90 的结果是? A. true B. false C. 85 D. 60

( ) 6. 判断“如果今天是周末,再进一步判断天气是否晴朗”这样的逻辑,最适合用什么结构? A. switch B. 多个独立的 if C. if-else D. 嵌套的 if

( ) 7. 分析代码,若 score = 50,程序会执行哪个分支? if (score >= 60) { ... } else if (score >= 80) { ... } else { ... } A. 执行 score >= 60 的分支 B. 执行 score >= 80 的分支 C. 执行 else 分支 D. 没有任何分支被执行

( ) 8. 下列哪个不是C++的关键字,可以作为变量名? A. double B. total_Count C. if D. case

( ) 9. 表达式 20 / 3 和 20 % 3 的结果分别是? A. 6.67 和 2 B. 6 和 2 C. 6 和 1 D. 7 和 2

( ) 10. 判断一个整数 num 是奇数,正确的 C++ 表达式是? A. num % 2 == 0 B. num % 2 == 1 C. num / 2 == 1 D. num / 2 != 0

三、 判断题 (每题 2 分,共 20 分,对的打“√”,错的打“×”)

( ) 1. 在 if-else 结构中,if 代码块和 else 代码块有可能同时被执行。 ( ) 2. 赋值运算符 = 和关系运算符 == 在 if 条件中作用相同,可以混用。 ( ) 3. 在 if (A || B) 这个条件中,如果 A 的结果已经是 true,那么程序将不再去判断 B 的真假。 ( ) 4. switch 语句的每个 case 分支都必须以 break 结尾。 ( ) 5. 一个 if 语句可以不包含 else if 或 else 部分。 ( ) 6. 在C++中,书写 if (x > 10 && < 20) 是一个合法且正确的判断 x 范围的方式。 ( ) 7. else 总是与和它在同一代码块中,且离它最近的那个未配对的 if 结合。 ( ) 8. 表达式 !false || false 的结果是 true。 ( ) 9. 在 switch 语句中,可以合并多个 case来执行相同的代码块。 ( ) 10. if...else if...else 结构中,只会有一个代码块被执行。

四、 代码阅读与分析题 (每题 4 分,共 16 分)

请直接在代码下方的横线处写出代码运行后的输出结果(如果程序没有任何输出,则写“无输出”)。

  1. 字符与整数运算

    int main() {
        char c = 'C'; // 'C'的ASCII码是67
        c = c + 3;
        cout << c << endl;
        return 0;
    }
    

    输出结果:____________________

  2. 多分支逻辑

    int main() {
        int temperature = -5;
        if (temperature > 30) {
            cout << "炎热";
        } else if (temperature > 15) {
            cout << "温暖";
        } else if (temperature > 0) {
            cout << "寒冷";
        } else {
            cout << "冰冻";
        }
        return 0;
    }
    

    输出结果:____________________

  3. switch

    int main() {
        char grade = 'B';
        switch (grade) {
            case 'A':
                cout << "优秀 ";
                break;
            case 'B':
                cout << "良好 ";
            case 'C':
                cout << "中等 ";
                break;
            case 'D':
                cout << "及格 ";
            default:
                cout << "需努力";
        }
        return 0;
    }
    

    输出结果:____________________

  4. 嵌套if

    int main() {
        bool logged_in = true;
        bool is_admin = false;
        if (logged_in) {
            if (is_admin) {
                cout << "欢迎管理员";
            } else {
                cout << "欢迎普通用户";
            }
        } else {
            cout << "请先登录";
        }
        return 0;
    }
    

    输出结果:____________________

五、 程序填空题(本大题共 30 分)

  1. 题目:成绩等级转换 (共 8 分) 要求:输入一个整数 score 代表成绩。根据以下规则使用 if-else if-else 结构输出对应的等级。

    • 90 ~ 100分: "A"
    • 80 ~ 89分: "B"
    • 70 ~ 79分: "C"
    • 60 ~ 69分: "D"
    • 60分以下: "F"
    int main() {
        int score;
        cout << "请输入学生成绩: ";
        cin >> score;
    
        if (score >= 90) {
            cout << "A";
        } 
        // 1. 判断 B 等级 (80 ~ 89)
        else if (__________________________) {
            cout << "B";
        } 
        // 2. 判断 C 等级 (70 ~ 79)
        else if (__________________________) {
            cout << "C";
        } 
        // 3. 判断 D 等级 (60 ~ 69)
        else if (__________________________) {
            cout << "D";
        } 
        // 4. 其他情况都为 F
        ________________ {
            cout << "F";
        }
        return 0;
    }
    
  2. 题目:星期转换器(共 8 分) 要求:输入一个1-7的整数 day,使用 switch 语句输出对应的英文星期(1对应"Monday",2对应"Tuesday" ... 7对应"Sunday")。如果输入其他数字,输出"Invalid day"。

    int main() {
        int day;
        cout << "请输入1-7的数字: ";
        cin >> day;
    
        // 1. 请根据题意在此处填写一种分支结构类型进行判断
        ________________{
            case 1:
                cout << "Monday";
                // 2.此处应填写?
                ________________;
            case 2:
                cout << "Tuesday";
                break;
            // 3. 请补充星期三(Wednesday)的判断
            ________________:
                cout << "Wednesday";
                break;
            case 4: cout << "Thursday"; break;
            case 5: cout << "Friday"; break;
            case 6: cout << "Saturday"; break;
            case 7: cout << "Sunday"; break;
            // 4. 处理无效输入的情况
            ________________:
                cout << "Invalid day";
        }
        return 0;
    }
    
  3. 题目:商场折扣计算器 要求:根据顾客的消费金额 amount 和他是否为VIP会员 is_vip 来计算最终需要支付的金额。

    • 折扣规则:
      • VIP会员(is_vip为true)可以享受折扣。折扣力度取决于消费金额:
        • 如果消费金额 amount 大于500元,VIP会员享受 8折 优惠。
        • 如果消费金额小于或等于500元,VIP会员享受 9折 优惠。
      • 非VIP会员(is_vip为false)不享受任何折扣。

    请根据以上规则,完成代码,计算完最终应付金后直接输出即可。

    int main() {
        double amount;
        bool is_vip;
        cout << "请输入消费金额和是否为VIP(1是/0否): ";
        cin >> amount >> is_vip;
        // 请自行使用合适的分支结构,来根据 消费金额 和 是否为VIP会员 计算总运费(本大题按完成度与步骤给分,请将完整的解题代码写在下方,本题答案不唯一,代码实现能达到题目要求即可)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
        return 0;
    }