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_areaperimeter,让主函数只负责读入、调用和输出。

立即练习

难度 题目 题解 训练目标
基础 洛谷 P5722:数列求和 题解 将求和步骤提取为独立函数。
巩固 洛谷 P5738:歌唱比赛 题解 将“去掉最高和最低分后求平均”拆成清晰步骤。