#370. 2024 csp第一轮模拟1

2024 csp第一轮模拟1

2024 csp第一轮模拟1

C++语言试题

考生注意事项:

  • 试题纸共有 16 页,答题纸共有 1 页,满分 100 分。请在答题纸上作答,写在试题纸上的 一律无效。
  • 不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。#### 一、单项选择题(共 15 题,每题 2 分,共计 30 分;每题有且仅有一个正确选项选择题)
  1. 在标准ASCI码表中,已知英文字母Z的ASCII码十进制表示是90,那么英文字 母B的 ASCII码二进制表示是()。

    {{ select(1) }}

  • 01000001
  • 01000010
  • 01000011
  • 01000000
  1. 以下关于CSP与NOIP的描述正确的是()。

    {{ select(2) }}

  • CSP 属于非专业认证,只有在校生才能参加
  • CSP 是中国电子学会举办的程序设计竞赛
  • CSP 和NOIP 毫无关系,没参加CSP也可以直接参加NOIP
  • CSP和 NOIP 都是CCF旗下的程序设计赛事
  1. 以下不能用作C+程序中的标识符的是()。

    {{ select(3) }}

  • private
  • friends
  • news
  • pascal
  1. NOI复赛测评机所用的Linux系统属于()。

    {{ select(4) }}

  • UML
  • IDE
  • OS
  • Database
  1. 如果65536种颜色用二进制编码来表示,至少需要()个二进制位。

    {{ select(5) }}

  • 16
  • 8
  • 12
  • 10
  1. 搜索算法中的BFS算法经常用到的数据结构是()。

    {{ select(6) }}

  • 链表
  • 队列
  1. 在已经从小到大排好序的n元素单向链表中查询是否存在关键字为k的元素,最坏情况下运行的时间复杂度是()。

    {{ select(7) }}

  • O(logn)
  • O(n)
  • O(n2n^2)
  • O(nlogn)
  1. 在下列各种排序算法中,不是以“比较”作为主要操作的算法是()。

    {{ select(8) }}

  • 归并排序
  • 快速排序
  • 冒泡排序
  • 桶排序
  1. 关于计算机网络,下面的说法中正确的是()。

    {{ select(9) }}

  • 现在的计算机必须连接到互联网才能正常运行
  • 192.168.0.1是A类IP地址
  • 互联网的诞生用到了现代计算机技术和现代通信技术
  • 接入互联网的计算机的IP地址已经全部升级到了IPv6地址
  1. 将(2,6,10,17)分别存儲到某个地址区间为0—10的哈希表中,如果哈希函数h(x)=(),将不会产生冲突,其中a%b表示a除以b的余数,sqrt表示开平方,floor表示向下取整。

{{ select(10) }}

  • x%11
  • x2x^2%11
  • 2x%11
  • floor(sqrt(x))%11
  1. 现在有一个十六进制数27,它等于二进制数的()。

{{ select(11) }}

  • 100011
  • 100101
  • 100111
  • 100011
  1. 以下逻辑表达式中,不管A、B如何取值,恒为假的是()。

{{ select(12) }}

  • (┐A∨B)∧(A∨B)∧A
  • ((┐A∨B)∨(A∨┐B)∧B
  • A∧((┐A∨B)∨(A∨-B))∧┐A
  • (-A∨B)∨(A∨┐B)∧A∧┐B
  1. 某二叉树有16个结点都同时有左孩子结点和右孩子结点,则该二叉树中的叶子结点数是()个。

{{ select(13) }}

  • 19
  • 17
  • 18
  • 16
  1. 现有16张不同的卡片,其中红、黄、蓝、绿色卡片各4张。从中任取3张,要求红色最多有1张并且3张卡片不能是同一种颜色,不同的取法组合共有()种。

{{ select(14) }}

  • 232
  • 472
  • 256
  • 484
  1. 有8个结点的非连通无向图最多有()条边。

{{ select(15) }}

  • 8
  • 7
  • 21
  • 49

二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填√,错误填×:

除特殊说明外,判断题每题1.5分,选择题每题3分,共计40分)

(1)

image

判断题

  1. 若输入0 2024,则输出结果为0。()

{{ select(16) }}

  • ×
  1. 将第5行中的if(b)改为if(0!=b),程序的运行结果不会改变。()

{{ select(17) }}

  • ×
  1. 若输入2.4 4.8,则输出错误。()

{{ select(18) }}

  • ×
  1. 将第15行 return a/gcd(a,b)*b替换成 return a*b/gcd(a,b),程序的运行结果不会改变。()

{{ select(19) }}

  • ×

选择题

  1. 若输入数据为20244204 12348,则输出为()。

{{ select(20) }}

  • 18
  • 36
  • 12
  • 24
  1. 若将第20行 cout < gcd(a,b)< endl替换成 cout<lcm(a,b)< endl,输入数据为20244204 12348,则输出为()。

{{ select(21) }}

  • 6,943,761,972
  • 程序出错,无输出
  • 3,471,880,986
  • 某个负数

(2)

image

  1. 输人一个长度大于128的字符串,程序的输出一定会出错。

{{ select(22) }}

  • ×
  1. 将第6行cin.getline(s,128)更换为getline(cin,s),程序的运行结果不变

{{ select(23) }}

  • ×
  1. 将第13行s[i]^=' '更换为s[i]^= 32,程序的运行结果不变。

{{ select(24) }}

  • ×
  1. 将第9行if(s[i]==90)更换为if(s[i]=='Z'),程序的运行结果不变

{{ select(25) }}

  • ×

26,若输人字符串s为CSPjs2024,则输出为()。

{{ select(26) }}

  • dtqjs2024
  • cspjs2024
  • DTQjs2024
  • CSPjs2024
  1. 若输出bcdea,则输人字符串s为(

{{ select(27) }}

  • BCDEA
  • ABCDZ
  • abcde
  • bcdez

(3)

image

  1. 如果输入n的值为0,那么程序在运行过程中一定会出现错误。

{{ select(28) }}

  • ×
  1. 如果将第26行的a[x]=0去掉,输出的结果不会改变。

{{ select(29) }}

  • ×
  1. 该程序算法的时间复杂度是O(n!n)O(n!*n)

{{ select(30) }}

  • ×
  1. 输入某个正整数n,程序运行的输出结果可能会等于0。

{{ select(31) }}

  • ×
  1. 若输入n=2,那么输出结果是()。

{{ select(32) }}

  • 1
  • 2
  • 3
  • 0
  1. 若输入n=5,那么输出结果是(

{{ select(33) }}

  • 16
  • 5
  • 10
  • 12
  1. 若输出结果为128,则输入n是()。

{{ select(34) }}

  • 8
  • 7
  • 16
  • 32

三、完善程序(单选题,每小题3分,共计30分)

(1)输入一个十进制正整数n,然后将n转换为二进制数,最后统计二进制数的各位数字,看看一共有多少位为1,然后打印出总数。

输入格式:

第1行输入十进制正整数n

输出格式:

输出一个整数,表示十进制正整数n转换成的二进制数中有多少位为1。

输入样例:

127

输出样例:

7

样例说明:

十进制数 127转换为二进制数1111111,二进制位一共有7个1,所以输出7

image

  1. ①处应填()。

{{ select(35) }}

  • x=n
  • x=1
  • x=0
  • x=n-1
  1. ②处应填(

{{ select(36) }}

  • --cnt
  • ++cnt
  • cnt--
  • cnt
  1. ③处应填()。

{{ select(37) }}

  • x/=2
  • n++
  • x++
  • n--
  1. ④处应填()

{{ select(38) }}

  • i<cnt
  • i<cnt/2
  • i<=cnt
  • i<=cnt/2
  1. ⑤处应填()

{{ select(39) }}

  • sum--
  • sum=x
  • sum=0
  • sum++

(2)在一个nxn的棋盘上布满了0和1,如图(a)所示(n=7)。为叙述方便,将0用字母表示,如图(b)所示。

image

跳棋规则如下:

(i)从某个0格出发,可以向上、下、左、右4个方向连续越过若干个(至少1个)格后跳人下一个0格。如图(b)所示,从A出发,可跳到B,或者跳到E,但不能直接跳到K。在跳到B之后还可以继续跳到F,在跳到E之后可继续跳到F或K,直到不能再跳为止。 (ii)每个0格只能到达一次,给出的起始点不能再次到达,也不能越过。跳过的距离为跳过1格的个数加1,如从A到B,跳过距离为3,从B到F,跳过距离为 2。

问题:当给出棋盘和起始点之后,最远能跳的距离是多少?

如图(b)所示,从A出发,可跳的路线不止一条,其中一条为: A - B - F - L - K - E(可能不唯一) 3 3 2 3 3 它的跳过距离为 14。

输人格式:

第1行3个整数n(1≤n≤100)、x、y(x,y是起始点坐标,图(b)中A处坐标为1,3)。 接下来n行,每行个数(0或1),数与数之间用一个空格分隔。

输出格式:

一个整数,即最大可跳距离(若不能跳,则输出0)

输入样例:

4 3 2 1010 1111 0010 110 1

输出样例: 6

image

image

  1. ①处应填()

{{ select(40) }}

  • 0
  • max(ans,step)
  • 1
  • step
  1. ②处应填()。

{{ select(41) }}

  • vis[tx][ty]== 1
  • vis[tx][ty]== 0
  • a[tx][ty]== 1
  • a[tx][ty]== 0
  1. ③处应填(

{{ select(42) }}

  • step+s
  • step+1
  • step
  • step-1
  1. ④处应填()。

{{ select(43) }}

  • A. vis[tx][ty]= 1
  • B. a[tx][ty]= 1
  • C. vis[tx][ty]= 0
  • D. a[tx][ty] = 0
  1. ⑤处应填()。

{{ select(44) }}

  • A. a[x][y]= 1
  • B. a[x][y]= 0
  • C. vis[x][y]= 1
  • D. vis[x][y]= 0