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

2026年10月24日

一、单选题

1.已知int x = 10;,要让指针p指向x,以下写法正确的?( )

  • A、int p = &x;
  • B、int *p = &x;
  • C、int *p = x;
  • D、*p = &x;

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

int a = 20;
int *p = &a;
*p = 30;
cout << a;
  • A、20
  • B、30
  • C、0
  • D、随机值

3.以下关于C++结构体的说法,错误的?( )

  • A、结构体可以包含多个不同类型的成员变量
  • B、结构体可以定义成员函数
  • C、结构体变量的成员可以通过.运算符访问
  • D、结构体的大小等于所有成员变量大小的总和,无任何内存对齐

4.有结构体定义如下,访问结构体变量s的age成员,写法正确的?( )

struct Student{
    string name;
    int age;
};
Student s;
  • A、s->age
  • B、Student.age
  • C、s.age
  • D、*s.age

5.将二进制数1010转换为十进制数,结果?( )

  • A、8
  • B、10
  • C、12
  • D、14

6.C++表达式5 & 3的计算结果?( )

  • A、1
  • B、7
  • C、8
  • D、15

7.以下排序算法中,平均时间复杂度为O(n log n)的?( )

  • A、冒泡排序
  • B、插入排序
  • C、选择排序
  • D、快速排序

8.以下关于排序算法稳定性的说法,正确的?( )

  • A、冒泡排序是不稳定排序
  • B、选择排序是稳定排序
  • C、插入排序是稳定排序
  • D、快速排序是稳定排序

9.在用数组实现高精度加法时,若从数组下标 0 开始存储数字,通常选择将最低位存储在下标 0 处。这样设计的主要原因?( )

  • A、方便按从低位到高位的顺序处理进位
  • B、方便按从高位到低位输出
  • C、节省数组空间
  • D、 避免数组越界

10.两个长度为n和m的大整数相加,结果的最大长度?( )

  • A、max(n,m)
  • B、max(n,m)+1
  • C、n+m
  • D、n+m+1

二、判断题

11.32位系统中,int类型指针占用4个字节的内存空间。( )

12.空指针NULL可以被解引用,不会出现运行错误。( )

13.C++ 中,结构体的成员变量必须全部是 public 的,不能设置为 private 或 protected。( )

14.相同类型的结构体变量之间可以直接用=进行赋值。( )

15.冒泡排序的最坏时间复杂度是O(n2)。( )

16.十进制数15转换为二进制数是 1111 。( )

17.快速排序的核心思想是分治法。( )

18.C++中,左移运算符<<会将操作数的二进制位向左移动,右侧补0。( )

19.C++的long long类型可以存储任意长度的大整数,无需使用数组实现高精度。( )

20.高精度乘法运算中,两个n位的大整数相乘,结果最长有2n位。( )

三、编程题

21.进制转换

http://xiaopangoj.com/p/48954

22.双阶乘

http://xiaopangoj.com/p/48955