返回 课程

信奥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课 循环(计数、求和、求乘积)
    10 主题|小节
  17. 第17课 循环进阶(While+)
    8 主题|小节
  18. 第18课 do-while及while其他用法
    8 主题|小节
  19. 第19课 For循环基础
    9 主题|小节
  20. 第20课 For循环进阶
    8 主题|小节
课 11, 主题|小节 9
进行中

11.8 模拟题

2025年9月22日
课 进展
0% 完成

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

一、选择题(5题)

第1题:给定代码在执行后的输出是( )。

int a = 7, b = 3;
bool result = (a > 5) || (b++ > 3);
cout << b;

□ A. 3 □ B. 4 □ C. 7 □ D. 10

答案:A

解析: 表达式(a > 5)为真(7大于5),由于||的短路特性,右侧的(b++ > 3)不会被执行,所以b的值保持为3。

第2题:下面代码的输出结果是( )。

int x = 10, y = 20;
if (x > 0 && y / x > 1)
    cout << "条件成立";
else
    cout << "条件不成立";

□ A. 条件成立 □ B. 条件不成立 □ C. 运行时错误 □ D. 编译错误

答案:A

解析: x > 0为真(10大于0),y / x = 20 / 10 = 2,大于1,所以条件成立,输出”条件成立”。

第3题:下面代码的输出结果是( )。

int n = 15;
if (n % 400 == 0 || (n % 4 == 0 && n % 100 != 0))
    cout << "是闰年";
else
    cout << "不是闰年";

□ A. 是闰年 □ B. 不是闰年 □ C. 15 □ D. 无输出

答案:B

解析: 15不能被400整除,也不能被4整除,所以不满足闰年条件,输出”不是闰年”。

第4题:下面代码中的条件判断与( )等价。

if (!(x < 5 || x > 10)) { ... }

□ A. if (x >= 5 && x <= 10) □ B. if (x < 5 && x > 10) □ C. if (x >= 5 || x <= 10) □ D. if (x < 5 && x <= 10)

答案:A

解析: 根据德摩根定律,!(x < 5 || x > 10)等价于!(x < 5)&& !(x > 10),进一步等价于x >= 5 && x <= 10。

第5题:下面代码的输出结果是( )。

int a = 1, b = 2;
if (a > b)
    cout << a;
else
    cout << b;

□ A. 1 □ B. 2 □ C. 3 □ D. 无输出

答案:B

解析: a > b为假(1不大于2),所以执行else分支,输出b的值2。

二、判断题(5题)

第1题:表达式a + b > c && a + c > b && b + c > a用于判断三个正数a、b、c是否能构成三角形。( )

答案:正确

解析: 这个表达式检查三角形的基本条件:任意两边之和大于第三边。

第2题:在C++中,表达式x = 5与表达式x == 5的效果相同。( )

答案:错误

解析: x = 5是赋值表达式,将5赋给x;而x == 5是比较表达式,检查x是否等于5。

第3题:如果变量x和y都是整数类型,那么表达式x < y < z可以正确判断y是否在x和z之间。( )

答案:错误

解析: 在C++中,表达式x < y < z会被解析为(x < y) < z,即先计算x < y得到布尔值(0或1),再与z比较,不能正确判断y是否在x和z之间。正确写法是x < y && y < z。

第4题:在逻辑表达式a || b && c中,先计算b && c,再计算与a的或运算。( )

答案:正确

解析: 在C++中,&&运算符的优先级高于||运算符,所以会先计算b && c,再计算与a的或运算。

第5题:在判断是否为闰年时,条件(year % 4 == 0 && year % 100 != 0) || year % 400 == 0与year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)是等价的。( )

答案:正确

解析: 逻辑或(||)运算满足交换律,即a || b等价于b || a,所以这两个表达式是等价的。

三、编程题(3题)

第1题:打折问题

题目描述:商店促销,购物满100元打9折,不满100元不打折。给定购物金额x元,计算应付金额并输出(结果保留两位小数)。

样例输入

120

样例输出

108.00

样例输入

80

样例输出

80.00

参考代码

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    double x;
    cin >> x;
    
    double pay = x;
    if (x >= 100) {
        pay = x * 0.9;
    }
    
    cout << fixed << setprecision(2) << pay;
    return 0;
}

第2题:路程计算

题目描述:小明每天步行上学。如果下雨,他会跑步,速度是10千米/小时;如果不下雨,他会走路,速度是5千米/小时。学校距离家2千米,请计算小明上学需要的时间(单位:小时,保留两位小数)。

样例输入

1

样例输出

0.20

样例输入

0

样例输出

0.40

说明: 输入1表示下雨,输入0表示不下雨。

参考代码

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    int weather;
    cin >> weather;
    
    double time;
    if (weather == 1) {
        time = 2.0 / 10.0;  // 下雨,跑步
    } else {
        time = 2.0 / 5.0;   // 不下雨,走路
    }
    
    cout << fixed << setprecision(2) << time;
    return 0;
}

第3题:计算邮费

题目描述:某快递公司的收费标准是:1kg以内(含1kg)收费12元,超过1kg收费17元。编写程序计算邮费。

样例输入

0.5

样例输出

12

样例输入

1.5

样例输出

17

参考代码

#include <iostream>
using namespace std;

int main() {
    double weight;
    cin >> weight;
    
    if(weight <= 1) {
        cout << 12;
    } else {
        cout << 17;
    }
    
    return 0;
}