火龙信奥
  • 分享
  • 课程
  • 在线题库
  • CSES
    • GESP
    • CSP
  • 打卡
    • 代码对战
    • 快速对战
  • 题单
  • 知识课堂
  • 在线比赛
  • 团队
  • 荣誉墙
  • 商城
  • 登录 / 注册

Level 1:分支结构

作者: 作者的头像   huolong , 时间:2022-03-07 12:23:29 , 所有人可见, 阅读  99

这份讲义将知识点解析与针对性练习结合在一起,方便你系统性复习。


C++ 关系、逻辑运算与选择结构全程通关讲义

第一部分:关系运算表达式

1. 知识要点

  • 运算符:> (大于), < (小于), >= (大于等于), <= (小于等于), == (等于), != (不等于)。
  • 结果:布尔类型(bool)。真为 1,假为 0。
  • 优先级:> , < , >= , <= 优先级相同,高于 == , !=。
  • 经典表达:
    • 奇偶判断:n % 2 == 0 (偶数), n % 2 != 0 (奇数)。
    • 约数判断:a % b == 0 (b 是 a 的约数)。
    • 浮点数相等:不能直接用 ==。应使用 fabs(a - b) < 1e-9。

2. 随堂练习

Q1. 表达式 5 > 3 == 1 的结果是?

解析:先算 5 > 3 结果为 1。再算 1 == 1 结果为 1。

Q2. 计算机表达:判断变量 c 是否为小写字母。

答案:c >= 'a' && c <= 'z'


第二部分:逻辑运算表达式

1. 知识要点

  • 运算符:&& (与/且), || (或), ! (非)。
  • 优先级:! > && > ||。
  • 整体优先级口诀:“术、系、逻、赋”(算术 > 关系 > 逻辑 > 赋值)。
  • 短路逻辑(重点):
    • A && B:如果 A 为假,不再计算 B。
    • A || B:如果 A 为真,不再计算 B。
  • 经典表达:
    • 闰年:(x%4 == 0 && x%100 != 0) || (x%400 == 0)

2. 随堂练习

Q3. int a=1, b=2, c=3; 执行 (a > b) && (c = 5) 后,c 的值是多少?

解析:1 > 2 为假,&& 短路,后面的赋值不执行。c 依然是 3。

Q4. 写出“x 不在 [10, 20] 范围内”的计算机表达。

答案:x < 10 || x > 20 或者 !(x >= 10 && x <= 20)


第三部分:格式化输入输出 (printf)

1. 知识要点

需要头文件:#include <cstdio> * 格式符:%d (int), %lf (double), %c (char), %s (字符串)。 * 保留小数:%.3lf (保留3位)。 * 宽度控制: * %8d:总宽8位,右对齐,空位补空格。 * %08d:总宽8位,右对齐,空位补0。 * %-8d:左对齐。

2. 随堂练习

Q5. 填空:printf("________", 3.14159); 输出结果为 0003.14。

解析:总长度 7 位(含小数点),保留 2 位小数,前补 0。 答案:%07.2lf


第四部分:if 语句与分支结构

1. 知识要点

  • if-else:满足条件执行 A,否则执行 B。
  • 三目运算符:条件 ? 值1 : 值2(if-else 的简写)。
  • 打擂台思想:寻找最大值。先假设一个为最大,后面每一个跟它比,赢了就替换。
  • switch-case:
    • 执行入口匹配 case。
    • 注意 break。没有 break 会产生“穿透”现象。

2. 随堂练习

Q6. 看程序写结果:

int x = 10, y = 20;
if (x > y)
    x += 10;
else
    y += 10;
if (x < y) x = 50;
cout << x << " " << y;

解析:第一个 if 失败,执行 y += 10,此时 y=30, x=10。第二个 if 10 < 30 成功,执行 x=50。 答案:50 30


第五部分:综合过关测试(模拟考)

1. [单选] 表达式 !(3 + 4 > 6 || 5 < 2) 的值是( ) A. 0
B. 1
C. true
D. 7

2. [填空] 用三目运算符表示:如果 a 大于 b 则返回 a,否则返回 b。 答:________

3. [编程题] 编写一段代码,输入一个百分制分数 s,如果 s >= 60 输出 "Pass",否则输出 "Fail"。(要求使用 if-else)

// 在此处补全代码

4. [分析题] switch 语句中,如果所有的 case 都不匹配,会执行哪个部分? 答:________


答案页

  1. A (括号内 7 > 6 为真,|| 后面的不再看。!(真) 即为 0)
  2. a > b ? a : b
  3. 如下: cpp if (s >= 60) { printf("Pass"); } else { printf("Fail"); }
  4. 执行 default 后面的语句(如果有的话)。

学习提示: * 考试坑点:if (a = 5) 是把 5 赋值给 a,结果永远为真;if (a == 5) 才是判断。 * 代码整洁:即使 if 后面只有一条语句,初学者也建议加上 {}。

—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com

关于火龙

  • 关于我们
  • 学员获奖
  • 预约试听
  • ACM课程
  • CSP课程
  • 学习指南

帮助中心

  • 用户协议
  • 打字练习 HOT
  • 在线画图
  • DevC++下载
  • CSP报名
  • GESP官网

推荐课程

  • C++零基础入门(可试看)
  • C++进阶提升
  • GESP考级辅导
  • GESP打卡
  • CSP-J/S打卡

公众号

火龙信奥公众号二维码

© 2017-2026 义乌市睿码科技有限公司版权所有 浙ICP备2021013995号

火龙信奥
请输入登录信息


请完成安全验证
验证码底图 滑块
向右拖动滑块完成验证
请输入用户名 / 绑定的手机号码



请输入注册信息(手机号验证码注册)





验证码5分钟有效,60秒内不可重复获取,每日最多3次

微信登录

微信登录二维码

正在生成二维码...

账号已过期,请续期。
去续期

绑定手机号

📱

为了更好地保护您的账号安全,享受完整的平台服务

请您尽快绑定手机号码