2026年9月青少年软件编程(C/C++)等级考试试卷(三级)

2026年10月19日

一、单选题

1.在C++程序中,函数定义的作用是?( )

  • A、提前告诉编译器函数的基本信息
  • B、写出函数具体实现的代码,包含函数体
  • C、只能声明无返回值函数
  • D、必须放在 main 函数之后,不能前置

2.有函数 void cal();,下面说法正确的是?( )

  • A、该函数调用后会返回一个整数
  • B、调用该函数时不需要传入参数
  • C、在函数内部必须写 return 0;
  • D、函数名 cal 属于 C++关键字

3.值传递时,函数内部修改形参的值,实参的值?( )

  • A、一定会同步改变
  • B、不会发生任何改变
  • C、有可能改变
  • D、由返回值决定

4.执行下面代码,输出结果为?( )

#include <iostream>
using namespace std;
void f(int &b) {
	b = b + 5;
}
int main() {
	int x=3;
	f(x);
	cout << x;
}
  • A、3
  • B、5
  • C、8
  • D、0

5.递归程序如果缺少结束条件,会造成?( )

  • A、程序快速运行结束
  • B、无限递归,栈溢出
  • C、编译报错
  • D、自动跳出递归

6.函数strlen()的功能是?( )

  • A、复制字符串
  • B、获取字符串有效字符长度
  • C、拼接两个字符串
  • D、比较两个字符串大小

7.下面哪一个不属于数学函数库?( )

  • A、sqrt()
  • B、strcat()
  • C、pow()
  • D、abs()

8.枚举法解题的思路是?( )

  • A、只检查一小部分数据
  • B、遍历所有候选情况,逐个检验条件
  • C、使用递归不断拆分问题
  • D、模拟一步一步的运行流程

9.下列哪个问题更适合用模拟法而不是枚举法解决?( )

  • A、找出三位水仙花数
  • B、统计n个人中身高超过 170cm的人数
  • C、简单计算器进行加减乘除运算
  • D、求一个整数的所有因数

10.用模拟法解决“小球下落反弹”问题:一球从100米高度自由落下,每次落地后反弹回原高度的一半,求第10次落地时共经过多少米。编写如下代码,关于这段代码,以下说法正确的是( )。

double h = 100, total = 0;
for(int i = 1; i <= 10; i++){ 
  total += h;// 下落 h /= 2; 
  total += h; // 反弹
}
  • A、代码完全正确,能求出第10次落地时经过的总路程
  • B、代码不正确,total 多加了第10次落地后的反弹高度
  • C、代码不正确,应该先计算反弹高度,再累加下落高度
  • D、代码不正确,循环次数应为9次

二、判断题

11.一个 C++程序中,main() 也是一个函数。( )

12.函数调用时,如果实参数量多于形参数量,程序一定可以正常运行。( )

13.值传递中,形参是实参的一份副本。( )

14.递归只能是函数直接调用自身。( )

15.递归函数中所有参数都是按引用传递。( )

16.C风格字符串末尾自带隐藏结束符 '\0'。( )

17.strcmp("abc","abd")返回值大于 0。( )

18.枚举范围过大时,程序运行耗时会增加。( )

19.模拟法和枚举法是两种完全不同的算法,它们不可能在同一个问题中同时使用。( )

20.模拟法只能按照事件发生的正向顺序进行模拟,不能从结果反推过程。( )

三、编程题

21.倒水游戏

http://xiaopangoj.com/p/38938

22.字符串后缀

http://xiaopangoj.com/p/38939