分享
课程
在线题库
CSES
限时题库
GESP
CSP
打卡
对战
代码对战
快速对战
题单
知识课堂
在线比赛
团队
荣誉墙
商城
登录 / 注册
L1 C++信奥基础
报名
分享
简介
笔记
视频课程
题目列表
提交记录
排名
## 1. 程序结构与控制流程 ### 1.1 程序框架 ```cpp #include <iostream> using namespace std; int main() { // 程序入口 int a, b; cin >> a >> b; cout << a + b << "\n"; return 0; } ``` - 注释有 `//` 与 `/* ... */` 两种形式;前者用于单行或行尾,后者必须成对出现。 - 使用系统头文件写作 `#include <头文件名>`;自己的头文件使用双引号,先在当前目录搜索。 - 流、容器和算法通常位于 `std` 命名空间,原文示例使用 `using namespace std;`。 - 程序从 `main()` 开始;竞赛程序应以 `return 0;` 正常结束。 - 语句通常以分号结束;由 `{}` 包围的语句块整体也视为一条语句。 ### 1.2 选择结构 `if` 在条件为真时执行后续语句或语句块,否则执行 `else` 分支(如存在)。 ```cpp if (condition) { // A } else if (anotherCondition) { // B } else { // C } ``` `switch` 根据表达式的值选择 `case`。`default` 可省略;若漏写 `break`,会继续执行后续 `case`,直到遇到 `break` 或 `switch` 结束。原文强调:`switch` 结束后有分号。 ```cpp switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: cout << "这个月有 31 天。\n"; break; case 4: case 6: case 9: case 11: cout << "这个月有 30 天。\n"; break; case 2: cout << "这个月有 " << (leap ? 29 : 28) << " 天。\n"; break; default: break; }; ``` 闰年规则:能被 400 整除,或能被 4 整除但不能被 100 整除。 ### 1.3 循环结构 ```cpp while (condition) { // 循环体 } do { // 循环体至少执行一次 } while (condition); for (initialization; condition; update) { // 循环体 } ``` `for` 可等价改写为初始化后执行 `while`,每轮末尾执行状态转移。三个表达式可以省略,但两个分号必须保留。 - `break` 跳出当前层循环;`continue` 跳过本轮余下代码,进入下一轮;二者只影响所在的一层循环。 - 写循环时重点检查计数变量、边界使用 `<`/`<=` 等,以及逆序循环的 `--`。 ```cpp int n; long long result; cin >> n; while (n > -1) { result = 1; for (int i = 1; i <= n; ++i) result *= i; cout << n << "! = " << result << "\n"; cin >> n; } ``` ### 1.4 `goto` 与 C/C++ 差异 `goto` 可跳至标签,原文给出其跳出多层循环的用途;但它会破坏程序结构,通常不提倡使用。 ```cpp for (int i = 0; i < 9; ++i) for (int j = 0; j < 9; ++j) for (int k = 0; k < 9; ++k) if (/* 满足条件 */) goto exited; exited: ``` 竞赛中 C 与 C++ 的主要差异:C++ 支持流输入输出、面向对象、`string` 与 STL;C 的头文件在 C++ 中宜改为如 `<cstdio>` 而非 `<stdio.h>`。 ## 2. 数据类型与复合数据 ### 2.1 基本数据类型、变量和常量 常用整型包括 `int`(通常 4 字节)、`long long`(8 字节)及其无符号形式;`char` 通常 1 字节,`bool` 表示 `true`/`false`;`float`、`double` 分别约有 7 位、15 位有效数字。对固定宽度有要求时,可包含 `<cstdint>` 并使用 `int8_t`、`int16_t`、`int32_t`、`int64_t` 等;原文推荐竞赛中以 `int64_t` 代替 `long long`,以保证位宽一致。 变量定义形式为“类型 + 标识符”,未初始化的局部变量值不确定。常量可使用: ```cpp const int N = 90; long long x = 123'456'789'012LL; // C++14 数字分隔符 int y = 0b1010'1010; // C++14 二进制字面量,值为 170 ``` 标识符只能包含字母、数字、下划线,不能以数字开头,不能与关键字冲突,必须先定义后使用;C++ 区分大小写。 ##### [编程入门,点击链接](https://hlcoding.com/blog/share/content/717/ "编程入门,点击链接") ##### [顺序结构,点击链接](https://hlcoding.com/blog/share/content/718/ "顺序结构,点击链接") ##### [常见函数,点击链接](https://hlcoding.com/blog/share/content/720/ "常见函数,点击链接") ##### [分支结构,点击链接](https://hlcoding.com/blog/share/content/723/ "分支结构,点击链接") ##### [循环结构,点击链接](https://hlcoding.com/blog/share/content/724/ "循环结构,点击链接")
×
扫码领取资料
获取课堂笔记 + 讲义 PDF
请输入登录信息
记住我
请完成安全验证
向右拖动滑块完成验证
请输入用户名 / 绑定的手机号码
请输入注册信息(手机号验证码注册)
请选择校区:
义乌地区
线上学员
1年级
2年级
3年级
4年级
5年级
6年级
7年级
8年级
9年级
高一
高二
高三
大学
获取验证码
验证码5分钟有效,60秒内不可重复获取,每日最多3次
×
微信登录
正在生成二维码...
账号已过期,请续期。
×
绑定手机号
📱
为了更好地保护您的账号安全,享受完整的平台服务
请您尽快绑定手机号码