返回 课程

信奥AC之路-1级

0% 完成
0/0 步骤
  1. 第1课 开发环境与基础输出
    5 主题|小节
  2. 第2课 算术运算符
    7 主题|小节
  3. 第3课 printf与运算输出
    7 主题|小节
  4. 第4课 数的进制与拆位
    6 主题|小节
  5. 第5课 变量与基础运算
    17 主题|小节
  6. 第6课 常量与取整运算
    8 主题|小节
  7. 第7课 关系运算
    8 主题|小节
  8. 第8课 逻辑运算
    9 主题|小节
  9. 第9课 输入与计算进阶
    10 主题|小节
  10. 第10课 if语句及双分支语句
    8 主题|小节
  11. 第11课 if语句及双分支进阶
    11 主题|小节
  12. 第12课 三目运算
    9 主题|小节
  13. 第13课 多分支、多if和switch语句
    11 主题|小节
  14. 第14课 循环(基本输出)
    7 主题|小节
  15. 第15课 循环(While+If)
    8 主题|小节
  16. 第16课 循环(计数、求和、求乘积)
    7 主题|小节
  17. 第17课 循环进阶(While+)
  18. 第18课 do-while及while其他用法
  19. 第19课 For循环基础
  20. 第20课 For循环进阶
课 13, 主题|小节 9
进行中

13.8 模拟题

2025年12月1日
课 进展
0% 完成

“小朋友们,为了帮助大家更好地准备考试,我们来尝试一些模拟题,”我说,”这些题目会全面测试你们对多分支、多if和switch语句的理解。”

一、选择题(10题)

第1题:下面代码段执行后的输出是( )。

int a = 15;
if (a % 3 == 0)
    cout << "A";
else if (a % 5 == 0)
    cout << "B";
else if (a % 15 == 0)
    cout << "C";
else
    cout << "D";

□ A. A □ B. B □ C. C □ D. D

答案:A

解析: a=15,a%3=0,所以第一个条件为真,输出”A”,然后跳出整个多分支结构。注意如果条件的顺序不同,结果可能会不同。

第2题:下面代码段执行后的输出是( )。

int x = 8;
if (x > 5)
    if (x < 10)
        cout << "A";
    else
        cout << "B";
else
    cout << "C";

□ A. A □ B. B □ C. C □ D. 不输出

答案:A

解析: 这是嵌套的if-else结构。x=8,第一个条件x>5为真(8>5),进入内部判断;内部条件x<10也为真(8<10),所以输出”A”。

第3题:下面代码段中变量y的最终值是( )。

int x = 7, y = 10;
if (x > 5) {
    y = 2 * x;
} else if (x > 0) {
    y = x + 5;
} else {
    y = 0;
}

□ A. 10 □ B. 12 □ C. 14 □ D. 0

答案:C

解析: x=7,第一个条件x>5为真(7>5),所以执行y=2x,即y=27=14。

第4题:下面代码段中,如果输入x=10,y=20,则输出是( )。

int x, y;
cin >> x >> y;
if (x > y)
    cout << "X > Y";
else if (x == y)
    cout << "X = Y";
else
    if (x + y > 25)
        cout << "Sum > 25";
    else
        cout << "Sum <= 25";

□ A. X > Y □ B. X = Y □ C. Sum > 25 □ D. Sum <= 25

答案:C

解析: x=10,y=20,第一个条件x>y为假(10不大于20),第二个条件x==y也为假(10不等于20),进入内部的if-else结构;内部条件x+y>25为假(10+20=30,大于25),所以输出”Sum > 25″。

第5题:下面代码段执行后的输出是( )。

int day = 3;
switch(day) {
    case 1:
        cout << "Monday";
        break;
    case 2:
        cout << "Tuesday";
    case 3:
        cout << "Wednesday";
    case 4:
        cout << "Thursday";
        break;
    case 5:
        cout << "Friday";
        break;
    default:
        cout << "Weekend";
}

□ A. Monday □ B. Tuesday □ C. WednesdayThursday □ D. Weekend

答案:C

解析: day=3,匹配case 3,输出”Wednesday”,然后由于没有break语句,继续执行case 4的代码,输出”Thursday”,然后遇到break跳出switch结构。所以最终输出为”WednesdayThursday”。

第6题:下面代码段执行后的输出是( )。

int n = 5, m = 10;
if (n > 0) {
    if (m > 5)
        cout << "A";
    else
        cout << "B";
} else
    cout << "C";
cout << "D";

□ A. A □ B. B □ C. C □ D. AD

答案:D

解析: n=5,m=10,第一个条件n>0为真(5>0),进入内部的if-else结构;内部条件m>5也为真(10>5),所以输出”A”。然后无条件输出”D”,最终结果是”AD”。

第7题:下面代码段中,当输入x=15时,输出是( )。

int x;
cin >> x;
if (x % 2 == 0) {
    if (x % 3 == 0)
        cout << "Divisible by 6";
    else
        cout << "Even but not divisible by 3";
} else {
    if (x % 3 == 0)
        cout << "Odd and divisible by 3";
    else
        cout << "Odd and not divisible by 3";
}

□ A. Divisible by 6 □ B. Even but not divisible by 3 □ C. Odd and divisible by 3 □ D. Odd and not divisible by 3

答案:C

解析: x=15,第一个条件x%2==0为假(15是奇数),进入else分支;内部条件x%3==0为真(15能被3整除),所以输出”Odd and divisible by 3″。

第8题:下面switch语句的输出等同于哪个多分支结构?

switch(n) {
    case 1:
        cout << "Low";
        break;
    case 2:
    case 3:
        cout << "Medium";
        break;
    case 4:
    case 5:
        cout << "High";
        break;
    default:
        cout << "Invalid";
}

□ A.

if (n == 1)
    cout << "Low";
else if (n == 2 || n == 3)
    cout << "Medium";
else if (n == 4 || n == 5)
    cout << "High";
else
    cout << "Invalid";

□ B.

if (n == 1)
    cout << "Low";
if (n == 2 || n == 3)
    cout << "Medium";
if (n == 4 || n == 5)
    cout << "High";
if (n < 1 || n > 5)
    cout << "Invalid";

□ C.

if (n == 1)
    cout << "Low";
else if (n >= 2 && n <= 3)
    cout << "Medium";
else if (n >= 4 && n <= 5)
    cout << "High";
else
    cout << "Invalid";

□ D.

if (n == 1)
    cout << "Low";
else
    if (n == 2 || n == 3)
        cout << "Medium";
    else
        if (n == 4 || n == 5)
            cout << "High";
        else
            cout << "Invalid";

答案:A

解析: switch语句会根据n的值选择不同的分支。选项A使用了多分支结构if-else if-else,并且条件与switch语句的case对应,会产生相同的输出。

第9题:下面代码段中,当输入一个月份n=4时,输出是( )。

int n;
cin >> n;
switch(n) {
    case 12:
    case 1:
    case 2:
        cout << "Winter";
        break;
    case 3:
    case 4:
    case 5:
        cout << "Spring";
        break;
    case 6:
    case 7:
    case 8:
        cout << "Summer";
        break;
    case 9:
    case 10:
    case 11:
        cout << "Autumn";
        break;
    default:
        cout << "Invalid month";
}

□ A. Winter □ B. Spring □ C. Summer □ D. Autumn

答案:B

解析: n=4,匹配case 4,但由于case 3、case 4和case 5共用代码块,输出”Spring”,然后遇到break跳出switch结构。

第10题:下面代码段执行后的输出是( )。

int x = 3, y = 4, z = 5;
if (x > y)
    if (x > z)
        cout << x;
    else
        cout << z;
else
    if (y > z)
        cout << y;
    else
        cout << z;

□ A. 3 □ B. 4 □ C. 5 □ D. 不输出

答案:C

解析: x=3,y=4,z=5,第一个条件x>y为假(3不大于4),进入外部else分支;内部条件y>z为假(4不大于5),所以输出z的值,即5。

二、判断题(5题)

第1题:在switch语句中,可以在一个case内部嵌套另一个switch语句。( )

答案:正确

解析: 在C++中,switch语句内部可以嵌套另一个switch语句,这称为嵌套switch结构。内部switch的case标签与外部switch的case标签可以相同,不会发生冲突。

第2题:多分支结构if-else if-else比多个独立的if语句更节省计算时间。( )

答案:正确

解析: 多分支结构在找到一个条件为真的分支后就会跳过后面的分支,而多个独立的if语句会依次判断每个条件,即使已经找到一个满足条件的分支。因此,多分支结构通常更节省计算时间。

第3题:switch语句中的case标签可以是变量或者表达式。( )

答案:错误

解析: 在C++中,switch语句的case标签必须是常量表达式,不能是变量或需要在运行时计算的表达式。

第4题:default分支在switch语句中是必须的。( )

答案:错误

解析: default分支在switch语句中是可选的,不是必须的。如果没有default分支,当switch表达式的值不匹配任何case标签时,不会执行任何操作。

第5题:在多分支结构中,如果前面的条件已经满足,后面的条件依然会被检查。( )

答案:错误

解析: 在多分支结构(if-else if-else)中,一旦找到一个为真的条件并执行对应的代码块,就会跳过后面所有的分支。这是多分支结构与多个独立if语句的主要区别。

三、编程题(3题)

第1题:季节判断

题目描述:输入一个月份(1-12的整数),判断该月份属于哪个季节。规定:3-5月为春季,6-8月为夏季,9-11月为秋季,12月和1-2月为冬季。

样例输入

9

样例输出

Autumn

参考代码

#include <iostream>
using namespace std;

int main() {
    int month;                   // 定义整数变量month表示月份
    cin >> month;                // 输入月份
    
    if (month < 1 || month > 12) {  // 检查月份是否有效
        cout << "Invalid month";
        return 0;
    }
    
    switch(month) {              // 根据月份判断季节
        case 3:                  // 3月
        case 4:                  // 4月
        case 5:                  // 5月
            cout << "Spring";    // 春季
            break;
        case 6:                  // 6月
        case 7:                  // 7月
        case 8:                  // 8月
            cout << "Summer";    // 夏季
            break;
        case 9:                  // 9月
        case 10:                 // 10月
        case 11:                 // 11月
            cout << "Autumn";    // 秋季
            break;
        case 12:                 // 12月
        case 1:                  // 1月
        case 2:                  // 2月
            cout << "Winter";    // 冬季
            break;
    }
    
    return 0;
}

第2题:三角形类型

题目描述:输入三个正整数a、b、c,它们表示三角形的三条边长。判断这三条边能否构成三角形,如果能,进一步判断它是什么类型的三角形(等边三角形、等腰三角形或普通三角形)。

样例输入

3 4 5

样例输出

普通三角形

参考代码

#include <iostream>
using namespace std;

int main() {
    int a, b, c;                  // 定义三个整数变量表示边长
    cin >> a >> b >> c;           // 输入三条边长
    
    // 检查是否能构成三角形(任意两边之和大于第三边)
    if (a + b > c && a + c > b && b + c > a) {
        // 判断三角形类型
        if (a == b && b == c) {
            cout << "等边三角形";     // 三边相等
        } else if (a == b || b == c || a == c) {
            cout << "等腰三角形";     // 有两边相等
        } else {
            cout << "普通三角形";     // 三边不等
        }
    } else {
        cout << "不能构成三角形";     // 不满足三角形条件
    }    
    return 0;
}