C++ 竞赛入门
函数理解
理解函数调用
本节学会什么
- 跟踪一次函数调用的输入、局部变量和返回值
- 知道局部变量不会和外部同名变量自动同步
- 用小函数分解主程序
为什么需要它
把代码拆成函数后,程序不再只有一条直线。理解“调用时进入函数、返回时回到调用处”能帮你正确追踪数据,也能避免把局部变量误认为全局状态。
最小可运行示例
#include <iostream>
int add_bonus(int score) {
score += 5;
return score;
}
int main() {
int score = 80;
int final_score = add_bonus(score);
std::cout << score << ' ' << final_score << '\n';
return 0;
}
输出为 80 85。调用 add_bonus(score) 时,参数 score 得到的是主函数中值的副本;函数修改自己的局部变量,返回 85,原变量仍是 80。
关键过程与易错点
- 进入函数时创建参数和局部变量;函数结束后它们消失。
- 函数内部同名变量会遮住外层同名变量。初学阶段应取不同的名字,降低误读风险。
- 返回值必须接住才会被后续使用:
int answer = add_bonus(score);。 - 若只想输出或修改外部数据,函数的设计会不同,下一节学习参数传递方式。
动手检查
写 int add_ten(int x),在函数内部和 main 中分别输出变量的值。观察调用前后主函数变量是否变化。
把两步计算分别写成 double_area 和 perimeter,让主函数只负责读入、调用和输出。
立即练习
| 难度 | 题目 | 题解 | 训练目标 |
|---|---|---|---|
| 基础 | 洛谷 P5722:数列求和 | 题解 | 将求和步骤提取为独立函数。 |
| 巩固 | 洛谷 P5738:歌唱比赛 | 题解 | 将“去掉最高和最低分后求平均”拆成清晰步骤。 |