信息学奥赛普及组第一轮测试.docx
- 文档编号:11959798
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:20
- 大小:943.06KB
信息学奥赛普及组第一轮测试.docx
《信息学奥赛普及组第一轮测试.docx》由会员分享,可在线阅读,更多相关《信息学奥赛普及组第一轮测试.docx(20页珍藏版)》请在冰豆网上搜索。
信息学奥赛普及组第一轮测试
2019信息学奥赛普及组第一轮测试
2019CCF非专业级别软件能力认证第一轮
(CSP-J)入门级C++语言试题A卷
认证时间:
2019年10月19日14:
30~16:
30
考生注意事项:
·试题纸满分100分,请在答题纸上作答,在试题纸上的一律无效。
·不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单选题,(共15题,每小题2分,共计30分;每题有且仅有一个正确选项)
1.中国的国家顶级域名是( )
A..cn(正确答案)
B..ch
C..chn
D..china
答案解析:
网络域名中,顶级国家\地区域名有.cn(中国),.uk(英国),.jp(日本),.hk(香港),.tw(台湾)等,典型的通用顶级域名有.edu(教育),.com(商业组织),.net(网络组织),.gov(政府机构),.org(非盈利组织)等。
2.二进制数11101110010111和01011011101011进行逻辑与运算的结果是( )。
A.01001010001011
B.01001010010011
C.01001010000001
D.01001010000011(正确答案)
答案解析:
按位运算基本操作
3.一个32位整型变量占用()个字节。
A.32
B.128
C.4(正确答案)
D.8
答案解析:
8位是1字节,因此32位是4字节。
在C++语言中,int是最常用的带符号32位整型变量,可表示数值[-2^31,2^31-1],unsignedint是最常用的无符号32位整型变量,可表示数值[0,2^32-1]。
4.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)
s=a
for(b=1;b<=c;b++)s=s–1;
则与上述程序段功能登记的赋值语句是( )
A.s=a–c;(正确答案)
B.s=a–b;
C.s=s–c;
D.s=b–c;
答案解析:
解析:
s初始化为a,紧接着for循环c次,每次s减1,因此该程序段相当于s=a-c.
5.设有100个已排好序的数据元素,采用折半查找时,最大比较次数为()
A.7(正确答案)
B.10
C.6
D.8
答案解析:
对100个有序元素进行折半查找,每次查找可将检索范围缩小一半。
由2^6-1<100<=2^7-1可知,最大比较次数为7。
6.链表不具有的特点是()
A.插入删除不需要移动元素
B.不必事先估计存储空间
C.所需空间与线性表长度成正比
D.可随机访问任一元素(正确答案)
答案解析:
链表是通过记录每个元素的后继位置来实现数据存储,所需空间与元素个数成正比,优点是不必事先估计存储空间、插入或删除指定位置元素的时间复杂度为O
(1)﹔但缺点是由于其元素的内存地址不连续,无法进行O
(1)的随机访问。
7.把8个同样的球放在5个同样的袋子里,允许有的袋子空着不放,问共有多少种不同的分法?
( )提示:
如果8个球都放在一个袋子里,无论是哪个袋子,都只算同一种分法
A.22
B.24
C.18(正确答案)
D.20
答案解析:
枚举法求解,8个同样的球分1个袋子共1种方案,分2个袋子共4种方案,分3个袋子共5种方案,分4个袋子共5种方案,分5个袋子共3种方案,合计18种。
8.一棵二叉树如右图所示,若采用顺序存储结构,即用一维数组元素存储该二叉树中的结点(根结点的下标为1,若某结点的下标为i,则其左孩子位于下标2i处、右孩子位于下标2i+1处),则该数组的最大下标至少为()。
A.6
B.10
C.15(正确答案)
D.12
答案解析:
根据题目给定的规则可知,下标最大的结点为树中深度最大且最靠右的结点,其下标为((12+1)2+1)2+1=15。
9.100以内最大的素数是()。
A.89
B.97(正确答案)
C.91
D.93
答案解析:
98-100均为合数,97为素数。
10.319和377的最大公约数是()。
A.27
B.33
C.29(正确答案)
D.31
答案解析:
使用辗转相除法可得GCD(319,377)=GCD(319,58)=GCD(58,29)=29。
或将两数分解质因数后,提取公共部分亦可求解。
11.新学期开学了,小胖想减肥,健身教练给小胖制定了两个训练方案。
方案一:
每次连续跑3公里可以消耗300千卡(耗时半小时)﹔方案二:
每次连续跑5公里可以消耗600千卡(耗时Ⅰ小时)。
小胖每周周一到周四能抽出半小时跑步,周五到周日能抽出一小时跑步。
另外,教练建议小胖每周最多跑21公里,否则会损伤膝盖。
请问如果小胖想严格执行教练的训练方案,并且不想损伤膝盖,每周最多通过跑步消耗多少千卡?
()
A.3000
B.2500
C.2400(正确答案)
D.2520
答案解析:
设方案1执行x天,方案2执行y天,则有3x+5y<=21、x+y<=7、y<=3。
要求300x+600y的最大值,枚举可得最优方案为x=2、y=3,此时300x+600y为2400。
或使用线性规划亦可求解。
12.一副纸牌除掉大小王有52张牌,四种花色,每种花色13张。
假设从这52张牌中随机抽取13张纸牌,则至少(A)张牌的花色一致。
A.4(正确答案)
B.2
C.3
D.5
答案解析:
最坏情况,13张牌对应四种花色的牌数为3、3、3、4。
13.一些数字可以颠倒过来看,例如0、1、8颠倒过来还是本身,6颠倒过来是9,9颠倒过来看还是6,其他数字颠倒过来都不构成数字。
类似的,一些多位数也可以颠倒过来看,比如106颠倒过来是901。
假设某个城市的车牌只由5位数字组,每一位都可以取0到9。
请问这个城市最多有多少个车牌倒过来恰好还是原来的车牌?
()
A.60
B.125
C.75(正确答案)
D.100
答案解析:
前2位有0、1、8、6、9共5种选择,第3位只能放0、1、8,后2位由前2位决定,因此总方案数为55311=75。
14.假设一棵二叉树的后序遍历序列为DGJHEBIFCA,中序遍历序列为DBGEHJACIF,则其前序遍历序列为()。
A.ABCDEFGHIJ
B.ABDEGHJCFI(正确答案)
C.ABDEGJHCFI
D.ABDEGHJFIC
答案解析:
后序遍历的规则是“左右根”、中序遍历的规则是“左根右”,因此可知,A是树根、DBGEHJ是A左子树的中序遍历(对应后续遍历DGJHEB)、CIF是A右子树的中序遍历(对应后续遍历IFC),递归画出对应的二叉树,再根据前序遍历规则“根左右”即可求出答案。
15.以下哪个奖项是计算机科学领域的最高奖?
()
A.图灵奖(正确答案)
B.鲁班奖
C.诺贝尔奖
D.普利策奖
答案解析:
图灵奖由美国计算机协会于1966年设立,其名称取自计算机科学之父图灵,专门奖励对计算机事业作出重要贡献的个人,被誉为“计算机界的诺贝尔奖”。
二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填√,错误填×;除特殊说明外,判断题1.5分,选择题4分,共计40分)
程序一:
·判断题
1)输入的字符串只能由小写字母或大写字母组成。
()
对
错(正确答案)
答案解析:
输入的字符串也可以包含数字等其他字符。
2)若将第8行的“i=1”改为“i=0”,程序运行时会发生错误。
()
A.对(正确答案)
B.错
答案解析:
若i可以为0,则第9行的if语句条件“n%i==O”将发生运行时错误RE。
3)若将第8行的“i<=n”改为“ii<=n”,程序运行结果不会改变。
()
A.对
B.错(正确答案)
答案解析:
当第8行的循环条件为“i<=n”时,字符串的末尾字符会被程序加工,但若改为“ii<=n”,字符串的末尾字符将不会被程序加工(除非字符串长度为1)。
4)若输入的字符串全部由大写字母组成,那么输出的字符串就跟输入的字符串一样。
()
A.对
B.错(正确答案)
答案解析:
大写字母的ASCII编码值小于小写字母的。
若输入的字符串全部由大写字母组成,则程序不会对其进行加工。
·选择题
5)若输入的字符串长度为18,那么输入的字符串跟输出的字符串相比,至多有()个字符不同。
A.18
B.6(正确答案)
C.10
D.1
答案解析:
18的正约数共有6个,因此程序至多修改输入字符串中的6个字符,即输出字符串与输入字符串至多有6个字符不同。
6)若输入的字符串长度为(),那么输入的字符串跟输出的字符串相比,至多有36个字符不同。
A.36
B.100000(正确答案)
C.1
D.128
答案解析:
根据程序的作用可知,要使输出字符串和输入字符串之间至多有36个字符不同,36应当是字符串长度n的约数个数。
本题选项中,仅有100000满足要求,将其分解质因数得100000=2^55^5,得其的正约数共有(5+1)(5+1)=36个。
程序二
假设输入的n和m都是正整数,x和y都是在[1,n]的范围内的整数,完成下面的判断题和单选题:
·判断题
1)当m>0时,输出的值一定小于2n。
()
A.对(正确答案)
B.错
答案解析:
由限定条件0
2)执行完第27行的“++ans”时,ans一定是偶数。
()
A.对
B.错(正确答案)
答案解析:
由于数对是一个左值与一个右值相匹配,因此ans最终一定是偶数。
但第27行的“++ans”在第23行的for循环的内部,其中间结果可能为奇数。
3)a[i]和b[i]不可能同时大于0。
()
A.对
B.错(正确答案)
答案解析:
a[i]用于记录与左值i相匹配的右值,不存在则为0;b[i用于记录与右值i相匹配的左值,不存在则为0。
当存在数对(i,y)和(x,i)都被我们选中时,a[i]和b[i]就会同时大于0。
4)若程序执行到第13行时,x总是小于y,那么第15行不会被执行。
()
A.对
B.错(正确答案)
答案解析:
存在反例——依次考虑数对(1,2)(1,3)时,第15行程序会被执行。
·选择题
5)若m个x两两不同,且m个y两两不同,则输出的值为()
A.2n-2m(正确答案)
B.2n+2
C.2n-2
D.2n
答案解析:
此时,输入的数对两两互不冲突,因此程序会将它们全部选中,根据上述ans的意义可知,其结果为2n-2m。
6)若m个x两两不同,且m个y都相等,则输出的值为()
A.2n-2(正确答案)
B.2n
C.2m
D.2n-2m
答案解析:
此时,输入的数对两两存在冲突,因此程序最终只会选用一个数对,根据上述ans的意义可知,其结果为2n-2。
程序三
·判断题
1)如果a数组有重复的数字,则程序运行时会发生错误。
()
A.对
B.错(正确答案)
答案解析:
若a数组有重复数字,则程序在根据a数组递归构造符合要求的二叉树时,对于相同结点值,会优先考虑位于左侧的。
2)如果b数组全为0,则输出为0。
()
A.对(正确答案)
B.错
答案解析:
程序最终输出的是各结点深度与b值的加权和,因此若b数组全为0,则加权和显然为0。
·选择题
3)当n=100时,最坏情况下,与第12行的比较运算执行的次数最接近的是:
()。
A.5000(正确答案)
B.600
c.6
D.100
答案解析:
最坏情况下,程序所构造的二叉树的每个结点至多仅有一个子结点,此时,程序将递归100层,其中第i层进行100-i+1次第12行的比较运算,总执行次数为100+99+98+…+15000。
4)当n=100时,最好情况下,与第12行的比较运算执行的次数最接近的是:
()。
A.100
B.6
C.5000
D.600(正确答案)
答案解析:
最佳情况下,程序构造二叉树时,对于每个结点会尽可能均分其左右子树。
定义根结点深度为1,则含n=100个结点的树的深度最小为logn7,此时每选定一层结点,程序都需要执行约n次的第12行的比较运算,因此总执行次数约为nlogn≈600。
5)当n=10时,若b数组满足,对任意0≤i A.386 B.383 C.384 D.385(正确答案) 答案解析: 此时,要使输出的ans值尽可能大,程序所构造的二叉树的深度应尽可能地大。 定义根结点深度为1,则含10个结点的二叉树的最大深度为10,因此ans的最大值为11+22+33+…+1010=385。 6)(4分)当n=100时,若b数组满足,对任意0≤i A.582 B.580(正确答案) C.579 D.581 答案解析: 此时,要使输出的ans值尽可能小,程序应参照完全二叉树构造此树,其中深度为1的结点共1个,深度为2的结点共2个,深度为3的结点共4个……深度为6的结点共32个,剩余37个结点的深度为7,因此ans的最小值为(11+22+34+…+632)+737=580。 三、完善程序(单选题,每题3分,共计30分) 程序一 1.(矩阵变幻)有一个奇幻的矩阵,在不停的变幻,其变幻方式为: 数字0变 输入一行一个不超过10的正整数n。 输出变幻n次后的矩阵。 试补全程序。 提示: “<<”表示二进制左移运算符,例如(11)2<<2=(1100)2; 而“^”表示二进制异或运算符,它将两个参与运算的数中的每个对应的二进制位一一进行比较,若两个二进制位相同,则运算结果的对应二进制位为0,反之为1。 1)①处应填() A.n%2 B.0 C.t(正确答案) D.1 答案解析: 此处为递归边界,当需要计算的是单位矩阵时,相应元素应赋值为t,即无需再经任何变换。 2)②处应填() A.x-step,y-step B.x,y-step C.x-step,y D.x,y(正确答案) 答案解析: 左上角(x,y),且大小2^n2^n的矩阵,可以分成4个2^n-12^n-1的矩阵分别计算。 此处需要计算的是4个矩阵中位于左上方的矩阵,该矩阵的左上角坐标为(x,y)。 3)③处应填() A.x-step,y-step B.×+step,y+step(正确答案) D.x,y-step C.x-step,y 答案解析: 左上角(x,y),且大小2^n2^n的矩阵,可以分成4个2^n-12^n-1的矩阵分别计算。 此处需要计算的是4个矩阵中位于右下方的矩阵,该矩阵的左上角坐标为(x+2^n-1,y+2^n-1)。 4)④处应填() A.n-1,n%2 B.n,0(正确答案) c.n,n%2 D.n-1,0 答案解析: 此处是递归计算的入口,即题目最终所求的是大小2^n2^n,由单个数字0变幻而来的矩阵,因此递归函数的后两个参数应设为n和0。 5)⑤处应填() A.1<<(n+1) B.1< C.n+1 D.1<<(n-1) 答案解析: 此处是计算最终所求的矩阵大小,即边长size为2^n,位运算写做“1< 程序二 2.(计数排序)计数排序是一个广泛使用的排序方法。 下面的程序使用双关键字计数排序,将n对10000以内的整数,从小到大排序。 例如有三对整数(3,4)、(2,4)、(3,3),那么排序之后应该是(2,4)、(3,3)、(3,4)。 输入第一行为n,接下来n行,第i行有两个数a[i]和b[i],分别表示第i对整数的第一关键字和第二关键字。 从小到大排序后输出。 数据范围1≤n≤10^7,1≤a[i],b[i]≤10^4。 提示: 应先对第二关键字排序,再对第一关键字排序。 数组ord[]存储第二关键字排序的结果,数组res[]存储双关键字排序的结果。 试补全程序。 1)①处应填() A.++cnt[i] B.++cnt[b[i]](正确答案) C.++cnt[a[i]maxs+b[i]] D.++cnt[a[i]] 答案解析: 此处是根据第二关键词b进行计数排序,并做各关键词的数量统计工作,因此将b[i]对应的元素数量自增1。 2)②处应填() A.ord[--cnt[a[i]]]=i B.ord[--cnt[b[i]]]=a[i] C.ord[--cnt[a[i]]]=b[i] D.ord[--cnt[b[i]]]=i(正确答案) 答案解析: 此处是根据第二关键词b进行计数排序,并记录排序结果。 此时的cnt[key]用于表示关键词为key的元素在结果数组中的位置,因此这里的程序应将关键词为b[i]的元素i放在ord数组里。 3)③处应填() A.++cnt[b[i]] B.++cnt[a[i]maxs+b[i]] C.++cnt[a[i]](正确答案) D.++cnt[i] 答案解析: 解析: 此处是根据第一关键词a进行计数排序,并做各关键词的数量统计工作,因此将a[i]对应的元素数量自增1。 4)④处应填() A.res[--cnt[a[ord[i]]]]=ord[i](正确答案) B.res[--cnt[b[ord[i]]]]=ord[i] C.res[--cnt[b[i]]]=ord[i] D.res[--cnt[a[i]]]=ord[i] 答案解析: 此处是根据第一关键词a进行计数排序,并记录排序结果。 由于此前已经根据第二关键词b进行计数排序,此时第i个元素的原始下标实际为ord[i],因此这里的程序应将关键词为a[ord[i]]的元素ord[i]放在res数组里。 5)⑤处应填() A.a[i],b[i] B.a[res[i]],b[res[i]](正确答案) C.a[ord[res[i]]],b[ord[res[i]]] D.a[res[ord[i]]],b[res[ord[i]]] 答案解析: 此处是按顺序输出排序结果。 由于此前已经按照第二关键词、第一关键词完成了计数排序,此时第i个元素的原始下标实际为res[i]。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息学 普及 第一轮 测试