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

2026年10月19日

一、单选题

1.以下关于C++函数声明的说法,正确的是?( )

  • A、函数声明必须写在函数调用之后
  • B、函数声明可以只写函数名和返回值类型,不写参数列表
  • C、函数声明的作用是告诉编译器函数的名称、返回值类型和参数信息
  • D、函数声明和函数定义作用完全相同

2.函数定义为 double calc(double a, double b),以下调用方式正确的是?( )

  • A、calc(5);
  • B、calc(3.14, 2.5);
  • C、calc("3", "5");
  • D、double calc(2, 3);

3.以下函数参数传递方式中,函数内对形参的修改会影响实参的是?( )

  • A、值传递
  • B、引用传递
  • C、常量传递
  • D、数值传递

4.执行以下代码,输出结果是?( )

void change(int &x)
{ 
    x = x * 2; 
} 

int main()
{ 
    int a = 8; 
    change(a); 
    cout << a; 
    return 0; 
}
  • A、4
  • B、8
  • C、16
  • D、0

5.以下递归函数用于计算1~n的累加和,横线处应填入的代码是?( )

int sum(int n)
{ 
  if(n == 1) 
    return 1; 
  _________ 
}
  • A、return sum(n-1);
  • B、return n + sum(n-1);
  • C、return n * sum(n-1);
  • D、return sum(n) + n;

6.以下哪个函数可以将两个C风格字符串拼接在一起?( )

  • A、strcat()
  • B、strcpy()
  • C、strlen()
  • D、strcmp()

7.执行 strcmp("test", "test"),返回值是?( )

  • A、大于0
  • B、等于0
  • C、小于0
  • D、不确定

8.要找出1000以内所有的素数,最适合使用的算法思想是?( )

  • A、递归法
  • B、枚举法
  • C、分治法
  • D、二分法

9.运行程序,输出结果为?( )

int cnt = 0;
    for(int n=2;n<=100;n++){
        bool isPrime = true;
        for(int i=2;i*i<=n;i++){
            if(n%i==0){
                isPrime=false;
                break;
            }
        }
        if(isPrime) cnt++;
    }
    cout<<cnt;
  • A、23
  • B、25
  • C、27
  • D、29

10.以下代码用于统计1~200中,能同时被3和5整除的数的个数,横线处应填入的代码是?( )

int cnt = 0;
for(int i=1;i<=200;i++){
  if(_________)
    cnt++;
}
cout << cnt;
  • A、i % 3 == 0 || i % 5 == 0
  • B、i % 3 == 0 && i % 5 == 0
  • C、i / 3 == 0 && i / 5 == 0
  • D、i % 15 != 0

二、判断题

11.函数的返回值类型为void时,函数内可以使用 return; 语句提前结束函数。( )

12.C++中,两个同名函数只要返回值类型不同,就可以构成函数重载。( )

13.值传递方式下,函数会为形参创建新的内存空间,实参和形参互不影响。( )

14.递归函数可以没有终止条件,编译器会自动处理。( )

15.有些算法既有递归实现也有非递归实现。( )

16.strlen()函数功能是计算字符串长度。( )

17.C++的 string 类可以直接用 + 运算符拼接。( )

18.枚举法的核心是不遗漏地遍历所有可能的情况。( )

19.枚举要注意程序的运行效率,否则很容易在规定的时间内得不到希望的结论。( )

20.当问题与游戏规则、物理过程等实际场景有关时,可以考虑使用模拟法解决问题。( )

三、编程题

21.画作

http://xiaopangoj.com/p/38946

22.花坛

http://xiaopangoj.com/p/38947