- juxq 的博客
编程要素教学讲义
- @ 2026-4-3 22:59:24
编程要素教学讲义
1. 编程要素简介
1.1 什么是编程要素
编程要素:构成一个计算机程序的基本组成部分,包括数据、操作和控制三个方面。掌握编程要素是编写正确、高效程序的基础。
任何程序都离不开三大要素:
- 数据要素:程序处理的对象(变量、常量、数据类型)
- 操作要素:对数据进行的运算(运算符、表达式)
- 控制要素:决定程序执行流程(顺序、分支、循环)
图示:程序的三要素关系
┌─────────────────────────┐
│ 程序 │
└───────────┬─────────────┘
│
┌───────────┼───────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│数据要素 │ │操作要素 │ │控制要素 │
│变量/常量│ │运算符 │ │顺序 │
│数据类型│ │表达式 │ │分支 │
└─────────┘ └─────────┘ └─────────┘
2. 数据要素
2.1 变量
变量:在程序运行过程中其值可以改变的量。每个变量有一个名字(标识符)和对应的内存空间,用于存储数据。
变量三要素:
- 变量名:唯一标识,遵循命名规则
- 数据类型:决定变量能存储什么类型的数据
- 值:变量当前存储的内容
变量命名规则:
- 只能由字母、数字、下划线组成
- 不能以数字开头
- 不能使用C++关键字(如
int、if、return等) - 区分大小写(
sum和Sum不同)
图示:变量在内存中的存储
内存地址 变量名 存储的值
0x1000 ──▶ a ──▶ 10
0x1004 ──▶ b ──▶ 25
0x1008 ──▶ c ──▶ 5
代码模型:变量的声明、定义与初始化
#include <bits/stdc++.h>
using namespace std;
int main() {
// 声明并定义变量
int age; // 声明一个整型变量 age
age = 18; // 赋值(初始化)
// 定义时直接初始化
int score = 95; // 声明并初始化为95
// 同时定义多个变量
int x = 1, y = 2, z = 3;
return 0;
}
2.2 常量
常量:在程序运行过程中其值不能改变的量。C++中有字面常量和用
const关键字定义的符号常量。
常量类型:
- 字面常量:直接写出的值,如
100、3.14、'A'、"hello" - 符号常量:用
const修饰的变量,其值不可修改
代码模型:常量的使用
#include <bits/stdc++.h>
using namespace std;
int main() {
// 字面常量
int a = 100; // 100 是整型字面常量
double pi = 3.14159; // 3.14159 是浮点型字面常量
char ch = 'A'; // 'A' 是字符常量
string str = "C++"; // "C++" 是字符串常量
// 符号常量(推荐使用)
const int MAX_N = 1000;
const double G = 9.8;
// MAX_N = 500; // 错误!常量不能重新赋值
return 0;
}
最佳实践:程序中多次使用的固定值应定义为
const常量,提高代码可读性和可维护性。
2.3 基本数据类型
数据类型:规定了变量占用内存的大小、存储值的范围和可进行的操作。
C++ 中常用的基本数据类型:
| 数据类型 | 关键字 | 占用字节 | 取值范围(大致) |
|---|---|---|---|
| 整型 | int |
4 | -2.1×10⁹ ~ 2.1×10⁹ |
| 长整型 | long long |
8 | -9.2×10¹⁸ ~ 9.2×10¹⁸ |
| 无符号整型 | unsigned int |
4 | 0 ~ 4.2×10⁹ |
| 单精度浮点 | float |
±3.4×10³⁸,7位有效数字 | |
| 双精度浮点 | double |
8 | ±1.7×10³⁰⁸,15位有效数字 |
| 字符型 | char |
1 | -128 ~ 127 或 0~255(ASCII) |
| 布尔型 | bool |
true(1)或 false(0) |
图示:不同数据类型的内存占用
int (4字节) ┌──┬──┬──┬──┐
└──┴──┴──┴──┘
long long (8) ┌──┬──┬──┬──┬──┬──┬──┬──┐
└──┴──┴──┴──┴──┴──┴──┴──┘
char (1) ┌──┐
└──┘
double (8) ┌──┬──┬──┬──┬──┬──┬──┬──┐
└──┴──┴──┴──┴──┴──┴──┴──┘
代码模型:数据类型的使用
#include <bits/stdc++.h>
using namespace std;
int main() {
int a = 100; // 整型
long long b = 10000000000LL; // 长整型,后缀LL
float c = 3.14f; // 单精度浮点,后缀f
double d = 3.1415926535; // 双精度浮点
char e = 'M'; // 字符型,用单引号
bool f = true; // 布尔型,true或false
// 查看变量占用字节数
cout << sizeof(a) << endl; // 输出 4
cout << sizeof(b) << endl; // 输出 8
cout << sizeof(c) << endl; // 输出 4
cout << sizeof(d) << endl; // 输出 8
cout << sizeof(e) << endl; // 输出 1
cout << sizeof(f) << endl; // 输出 1
return 0;
}
3. 输入与输出
输入/输出(I/O):程序与外部环境交换数据的方式。C++ 中使用
cin进行标准输入,cout进行标准输出。
图示:输入输出流程
键盘 ──→ cin ──→ 变量(内存)──→ cout ──→ 屏幕
代码模型:基本输入输出
#include <bits/stdc++.h>
using namespace std;
int main() {
// 输出
cout << "Hello" << endl; // endl 换行
cout << 100 << " " << 200; // 输出多个内容
// 输入
int x, y;
cin >> x >> y; // 从键盘读取两个整数
// 格式化输出
double pi = 3.1415926;
cout << fixed << setprecision(2) << pi << endl; // 输出 3.14
return 0;
}
4. 运算符与表达式
运算符:对数据进行运算的符号。表达式:由运算符和操作数组成的式子,每个表达式都有一个计算结果。
4.1 算术运算符
| 运算符 | 含义 | 示例 | 结果 |
|---|---|---|---|
+ |
加法 | 5 + 3 |
8 |
- |
减法 | 5 - 3 |
2 |
* |
乘法 | 5 * 3 |
15 |
/ |
除法 | 5 / 2 |
2(整数) |
% |
取模 | 5 % 2 |
1 |
注意:整数除法会截断小数部分。要得到浮点结果,需将其中一个操作数转为浮点型:
5.0 / 2或1.0 * 5 / 2。
4.2 关系运算符
用于比较两个值,结果为布尔值(true / false)。
| 运算符 | 含义 | 示例 |
|---|---|---|
== |
等于 | a == b |
!= |
不等于 | a != b |
> |
大于 | a > b |
< |
小于 | a < b |
>= |
大于等于 | a >= b |
<= |
小于等于 | a <= b |
4.3 逻辑运算符
用于组合多个条件。
| 运算符 | 含义 | 示例 |
|---|---|---|
&& |
与 | a > 0 && a < 10 |
|| |
或 | a < 0 || a > 100 |
! |
非 | !(a == b) 等价于 a != b |
4.4 赋值运算符与自增自减
| 运算符 | 示例 | 等价于 |
|---|---|---|
= |
a = 5 |
赋值 |
+= |
a += 3 |
a = a + 3 |
-= |
a -= 2 |
a = a - 2 |
*= |
a *= 4 |
a = a * 4 |
/= |
a /= 2 |
a = a / 2 |
%= |
a %= 3 |
a = a % 3 |
++ |
a++ |
a = a + 1(后置) |
-- |
--a |
a = a - 1(前置) |
代码模型:运算符的使用
#include <bits/stdc++.h>
using namespace std;
int main() {
int a = 10, b = 3;
// 算术运算
cout << a + b << endl; // 13
cout << a - b << endl; // 7
cout << a * b << endl; // 30
cout << a / b << endl; // 3(整数除法)
cout << a % b << endl; // 1
// 浮点除法
cout << 1.0 * a / b << endl; // 3.33333
// 关系运算
cout << (a > b) << endl; // 1 (true)
cout << (a == b) << endl; // 0 (false)
// 逻辑运算
bool flag = (a > 5 && b < 5); // true && true = true
cout << flag << endl; // 1
// 复合赋值
a += 5; // a = a + 5 → 15
b *= 2; // b = b * 2 → 6
// 自增自减
int x = 5;
int y = x++; // y = 5, x = 6(后置:先使用,后自增)
int z = ++x; // x = 7, z = 7(前置:先自增,后使用)
return 0;
}
4.5 运算符优先级
当表达式中包含多个运算符时,优先级决定了计算顺序。优先级高的先计算。
| 优先级 | 运算符 | 结合性 |
|---|---|---|
| 1(高) | () |
从左到右 |
| 2 | ++ -- !(单目) |
从右到左 |
| 3 | * / % |
从左到右 |
| 4 | + - |
|
| 5 | < <= > >= |
|
| 6 | == != |
|
| 7 | && |
|
| 8 | || |
|
| 9(低) | = += -= 等赋值运算符 |
从右到左 |
技巧:不确定优先级时,使用括号
()明确计算顺序,提高可读性。
5. 程序控制结构
C++ 程序按照三种基本结构组织代码:
5.1 顺序结构
程序按代码书写顺序逐条执行,没有跳转。
图示:
语句1 → 语句2 → 语句3 → ...
5.2 分支结构
根据条件选择执行不同的代码路径。详见《分支结构教学讲义》。
基本形式:if、if-else、else-if、switch
5.3 循环结构
重复执行一段代码多次。包括
for、while、do-while循环。
分支结构和循环结构将在后续讲义中详细讲解。
6. 典型例题
例题1:交换两个变量的值
题目描述
输入两个整数
a和b,交换它们的值后输出。输入:一行两个整数,用空格隔开。 输出:一行两个整数,交换后的结果。
思路解析
交换两个变量需要借助一个临时变量保存其中一个值。这是编程中最基础的操作之一。
代码实现
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
// 交换 a 和 b 的值
int temp = a; // 临时变量保存 a 的值
a = b; // 将 b 的值赋给 a
b = temp; // 将原 a 的值赋给 b
cout << a << " " << b << endl;
return 0;
}
扩展:C++ 标准库提供了 swap(a, b) 函数,可直接交换。
例题2:计算圆的面积和周长
题目描述
输入圆的半径
r(浮点数),计算圆的面积和周长。圆周率取 3.14159。公式:面积 = π × r²,周长 = 2 × π × r。
输入:一个浮点数
r。 输出:两行,第一行为面积,第二行为周长,均保留两位小数。
思路解析
本题考察浮点数的运算和格式化输出。注意使用 double 类型提高精度,以及 setprecision 控制小数位数。
代码实现
#include <bits/stdc++.h>
using namespace std;
int main() {
const double PI = 3.14159; // 符号常量
double r;
cin >> r;
double area = PI * r * r;
double circumference = 2 * PI * r;
// 保留两位小数输出
cout << fixed << setprecision(2);
cout << area << endl;
cout << circumference << endl;
return 0;
}
例题3:判断一个数的奇偶性
题目描述
输入一个整数
n,判断它是奇数还是偶数。输入:一个整数
n()。 输出:如果是偶数输出"even",奇数输出"odd"。
思路解析
使用取模运算符 %:若 n % 2 == 0 则为偶数,否则为奇数。注意负数取模在 C++ 中结果为负,但判断奇偶性仍可正常工作(如 -3 % 2 = -1,不为0)。更通用的写法是取绝对值后判断,或直接用 n % 2 == 0。
代码实现
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
if (n % 2 == 0) {
cout << "even" << endl;
} else {
cout << "odd" << endl;
}
return 0;
}
7. 总结
编程要素是编写任何程序的基础。通过本讲学习,应掌握:
| 类别 | 核心知识点 |
|---|---|
| 数据要素 | 变量的声明与初始化、常量、基本数据类型(int, long long, double, char, bool) |
| 操作要素 | 算术、关系、逻辑、赋值运算符,表达式的计算,运算符优先级 |
| 控制要素 | 顺序、分支、循环三种基本结构(分支和循环后续详细展开) |
| I/O | cin / cout 的使用,格式化输出 fixed + setprecision |
核心技巧:
- 变量使用前必须先声明并初始化
- 常量使用
const定义,避免魔法数字- 整数除法注意截断,需要浮点结果时使用
1.0 * a / b- 掌握运算符优先级,不确定时加括号
- 万能头文件
#include <bits/stdc++.h>包含了所有常用库
8. 练习题目
- P1001 A+B Problem —— 基本输入输出
- P5703 【深基2.例5】苹果采购 —— 变量与乘法
- P5704 【深基2.例6】字母转换 —— 字符与ASCII码
- P5705 【深基2.例7】数字反转 —— 算术运算
- P5706 【深基2.例8】再分肥宅水 —— 浮点数运算与格式化输出
参考资料
- 【文章】C++ 变量和常量 - 菜鸟教程
- 【文章】C++ 数据类型
- 【文章】C++ 运算符
- 【书籍】《信息学奥赛一本通》第1章:C++语言基础
- 【书籍】《C++ Primer Plus》第3章:处理数据