csp-j初赛测评

C++ 120分钟 总分 100.0 49 题
试卷题目预览
第1题 中级 2分 单选
某同学用冒泡排序对数组{6,1,5,2,4}进行升序排序,请问需要进行多少次元素交换?( )
A. 5
B. 6
C. 7
D. 8
第2题 中级 2分 单选
考虑以下C++函数,在main函数调用solve后,x和y的值分别是?( )

A. 5, 10
B. 10, 5
C. 10, 10
D. 5, 5
第3题 中级 2分 单选
函数calc(n)的定义如下,则calc(5)的返回值是多少?( )

A. 5
B. 6
C. 7
D. 8
第4题 中级 2分 单选
在C/C++中,(char)('a'+13)与下面的哪一个值相等( )
A. 'm'
B. 'n'
C. 'z'
D. '3'
第5题 中级 2分 单选
下面哪一个不是操作系统名字( )
A. Notepad
B. Linux
C. Windows
D. macOS
第6题 中级 2分 单选
在C++中,下面哪个关键字用于声明一个变量,其值不能被修改?( )。
A. unsigned
B. const
C. static
D. bool
第7题 中级 2分 单选
根节点的高度为1,一根拥有2023个节点的三叉树高度至少为( )。
A. 6
B. 7
C. 8
D. 9
第8题 中级 2分 单选
以下哪个不是操作系统?( )
A. Linux
B. Windows
C. Android
D. HTML
第9题 中级 2分 判断
阅读程序(3)

将第18行的"f[i][j]=std::max(f[i][j],std::max(f[i-1][j],f[i][j-1]));"删去后,并不影响程序运行结果。()

T. 正确
F. 错误
第10题 中级 1分 判断
阅读程序(2)

假设输入的n为正整数,输出的答案一定小于等于n,大于等于1。( )

T. 正确
F. 错误
第11题 中级 1分 判断
阅读程序(3)

当程序运行完毕后,对于所有的1≤i,j≤n,都一定有f[i][j]≤f[n][n]。( )

T. 正确
F. 错误
第12题 中级 1分 判断
阅读程序(1)

当输入为"10"时,程序的第一个输出为"4",第二个输出为"17"。( )

T. 正确
F. 错误
第13题 中级 1分 判断
阅读程序(1)

若将isPrime(i)函数中的条件改为i<=n/2,输入"20"时,countPrimes(20)的输出将变为"6"。( )

T. 正确
F. 错误
第14题 中级 1分 判断
阅读程序(1)

sumPrimes函数计算的是从2到n之间的所有素数之和。( )

T. 正确
F. 错误
第15题 中级 1分 判断
阅读程序(3)

当b为负数时,customFunction(a,b)会陷入无限递归。( )

T. 正确
F. 错误
第16题 中级 1分 判断
阅读程序(3)

当输入为"2 3"时,customFunction(2,3)的返回值为"64"。( )

T. 正确
F. 错误
第17题 中级 1分 判断
阅读程序(2)

当输入两个完全相同的字符串时,g函数的返回值总是true( )

T. 正确
F. 错误
第18题 中级 1分 判断
阅读程序(1)


假设输入的所有数都为不超过1000的正整数:

将第7行中的"(s-b)*(s-c)"改为"(s-c)*(s-b)"不会影响程序运行的结果( )

T. 正确
F. 错误
第19题 中级 2分 单选
以下对数据结构的表述不恰当的一项为:( )。
A. 图的深度优先遍历算法常使用的数据结构为栈。
B. 栈的访问原则为后进先出,队列的访问原则是先进先出。
C. 队列常常被用于广度优先搜索算法。
D. 栈与队列存在本质不同,无法用栈实现队列。
第20题 中级 2分 单选
运行以下代码片段的行为是( )。

A. 将x的值赋为201
B. 将y的值赋为101
C. 将q指向x的地址
D. 将p指向y的地址
第21题 中级 2分 单选
假设有一组字符{a,b,c,d,e,f},对应的频率分别为5%,9%,12%,13%,16%,45%。请问以下哪个选项是字符a,b,c,d,e,f分别对应的一组哈夫曼编码?( )
A. 1111,1110,101,100,110,0
B. 1010,1001,1000,011,010,00
C. 000,001,010,011,10,11
D. 1010,1011,110,111,00,01
第22题 中级 3分 单选
阅读程序(3)

如果输入x=3和y=3,则程序的最终输出为( )

A. 27
B. 81
C. 144
D. 256
第23题 中级 5分 单选
如果一个正整数 a,既是8的倍数,又是24的约数,它的C++表达式应该如何表示( )
A. a % 8 == 0 && 24 % a == 0;
B. a / 8 == 0 && 24 / 8 == 0;
C. 8 % a == 0 && a % 24 == 0;
D. 8 % a == 0 && 24 % a == 0;
第24题 中级 5分 单选
执行 for(int k=5; k>=1; k--) { cout << k; } 后,屏幕输出为( )
A. 12345
B. 5432
C. 01234
D. 54321
第25题 中级 5分 单选
若 int a = 10, b = 5;,则表达式 a != b 的值为( )
A. true
B. false
C. 10
D. 5
第26题 中级 2分 单选
以下关于标准C++一维数组的描述,哪一项是错误的?(  )
A. 数组的下标从0开始
B. 数组在内存中是连续存放的
C. 数组的长度只能在运行时才能确定
D. 可以在程序中修改数组某个元素的值
第27题 中级 2分 单选
下列代码段执行后,变量sum的值是(  )

A. 12
B. 17
C. 33
D. 40
第28题 中级 2分 单选
以下关于C++求最小值函数min()的描述,不正确的是(  )
A. 函数必须返回一个值
B. 该函数可以嵌套调用
C. 调用min(5)是错误的,不能通过编译
D. 调用min()(不传任何参数)可以通过编译,结果为0
第29题 中级 2分 单选
执行以下C++代码后,c的数值是( )

A. 3.33333
B. 3.333
C. 3.0
D. 3.3
第30题 中级 2分 单选
以下C++代码count++执行的次数是( )

A. 2
B. 3
C. 4
D. 0
第31题 中级 2分 单选
下面枚举法查找最大值索引程序中,横线处应该填写的是()

A. if (arr[maxIndex] > arr[i])
B. if (arr[i]-1 > arr[maxIndex])
C. if (arr[i]+1 > arr[maxIndex])
D. if (arr[i] > arr[maxIndex])
第32题 中级 2分 单选
下面程序想通过函数计算三门课总分,横线处应填入的是()。

int sumScore(int a, int b, int c) {
return a + b + c;
}
int main() {
int chinese = 88, math = 95, english = 90;
int total = ________;
cout << total;
return 0;
}

A. sumScore
B. sumScore(chinese, math, english)
C. sumScore(int chinese, int math, int english)
D. sumScore(a, b, c)
第33题 中级 2分 单选
某班3个小组、每组4名同学的分数存入下面的二维数组score,则score[1][2]的值是()。

int score[3][4] = {
{80, 81, 82, 83},
{90, 91, 92, 93},
{70, 71, 72, 73}
};

A. 81
B. 90
C. 92
D. 72
第34题 中级 2分 单选
下面C++代码执行后,输出的是( )。

string s = "chen a dai";
char c = s[0];
cout << c << endl;

A. chen
B. c
C. chen a dai
D. dai
第35题 中级 2分 单选
下面C++代码执行后的结果是( )。

int arr[2][3] = {{1,2,3}, {4,5,6}};
cout << arr[1][0] << endl;

A. 1
B. 2
C. 4
D. 5
第36题 中级 2分 单选
在C++中,执行下面代码后,输出的是( )。

int arr[100];
cout << sizeof(arr) << endl;

A. 400
B. 200
C. 20
D. 100
第37题 中级 2分 单选
现代计算机是指电子计算机,它所基于的是( )体系结构。
A. 艾伦·图灵
B. 冯·诺依曼
C. 阿塔纳索夫
D. 埃克特-莫克利
第38题 中级 2分 单选
执行climb(6)的返回值为( )。

int climb(int n) {
if(n <= 2) return n;
int a = 1, b = 2, c = 0;
for(int i = 3; i <= n; i++) {
c = a + b;
a = b;
b = c;
}
return c;
}

A. 8
B. 13
C. 5
D. 10
第39题 中级 2分 单选
在C++中,( )正确定义一个名为student的结构体,其中包含一个name字符数组和一个age整数?
A. struct student { char name[20]; int age; };
B. student struct { char name[20]; int age; };
C. student struct { string name; int age; };
D. struct student { char[20] name; int age; };
第40题 中级 2分 单选
下面代码实现了冒泡排序函数,则横线上应填写( )。

for (int i = 0; i < arr.size() - 1; i++) {
bool flag = false;
________________ {
if (arr[j] > arr[j + 1]) {
swap(arr, i, j);
flag = true;
}
}
if (!flag) break;
}

A. for (int j = 0; j < arr.size() - 1; j++)
B. for (int j = arr.size() - 1; j > 0; j--)
C. for (int j = 0; j < i; j++)
D. for (int j = i-1; j <= 0; j--)
第41题 中级 2分 单选
下面关于链表和数组的描述,错误的是( )。
A. 当数据数量不确定时,为了应对各种可能的情况,需要申请一个较大的数组,可能浪费空间;此时用链表比较合适,大小可动态调整。
B. 在链表中访问节点的效率较低,时间复杂度为O(n)。
C. 链表插入和删除元素效率较低,时间复杂度为O(n)。
D. 链表的节点在内存中是分散存储的,通过指针连在一起。
第42题 中级 2分 单选
下列代码中,输出结果是( )

A. Equal
B. Not equal
C. 程序不能正确执行
D. 没有输出
第43题 中级 2分 单选
已知字符'0'的ASCII编码的十进制表示为48,则执行下面C++代码后,输出是( )。

A. 17
B. 158
C. 209
D. 316
第44题 中级 2分 单选
小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是( )。
A. 小程序
B. 计时器
C. 操作系统
D. 神话人物
第45题 中级 2分 单选
下面C++程序执行的结果是( )。

A. 2
B. 3
C. 5
D. 4
第46题 中级 3分 单选
完善程序(1)

(枚举因数)从小到大打印正整数n的所有正因数。

①处应填( )

A. n % i == 0
B. n % i == 1
C. n % (i-1) == 0
D. n % (i-1) == 1
第47题 中级 3分 单选
完善程序(1)

(枚举因数)从小到大打印正整数n的所有正因数。

②处应填( )

A. n / fac[k]
B. fac[k]
C. fac[k]-1
D. n / (fac[k]-1)
第48题 中级 1分 单选
阅读程序(2)


假设 int 为 32 位有符号整数类型,输入的 n 是不超过 47000 的自然数、k 是不超过 int表示范围的自然数。

当输入为"2 1"时,输出的第一个数最接近( )。

A. 1
B. 1.414
C. 1.5
D. 2
第49题 中级 2分 单选
整型变量x的初始值为10,以下代码的输出结果是(  )

A. 0
B. -1
C. 1
D. 死循环
💬