
2022年CCF非专业级别软件能力认证第一轮CSP-J1入门级C++语言试题及答案.pdf
17页2022 CCF非专业级别软件能力认证第一轮(CSP-J1)入门级C+语言试题一、单项选择题(共1 5题,每 题2分,共 计30分;每题有且仅有一个正确选项)1 .以下哪种功能没有涉及C+语言的面向对象特性支持:()A.C+中 调 用pr i n t f函数B.C+中调用用户定义的类成员函数C,C+中构造f,c I a s s 或 s t r u c tD.C+中构造来源于同一基类的多个派生类题目解析【解析】正确答案:A C+基础知识,面向对象和类有关,类又涉及父类、子类、继承、派生等关系,pr i n t f是C语言的与一个输出函数2.有6个元素,按 照6、5、4、3、2、1的顺序进入栈S,请问下列哪个出栈序列是非法的()A.5 4 3 6 1 2B.4 5 3 1 2 6C.3 4 6 5 2 1D.2 3 4 1 5 6题目解析【解析】正确答案C栈的知识考试,后进先出的特点3.运行以下代码片段的行为是()i n t x =1 0 1;i n t y =2 0 1;i n t *p=&x;i n t *q =&y;p=q;A.将 x的值赋为2 0 1B.将 y的值赋为1 0 1C.将 q指 向 x的地址D.将 p 指 向v的地址题目解析【解析】正确答案D,指针的本质是地址!最 开 始 p 指 向 x的地址,q指 向 y的地址,最 后 P指 向 q的地址,所 以 P最终指向y的地址。
4.链表和数组的区别包括()A.数组不能排序,链表可以B.链表比数组能存储更多的信息C.数组大小固定,链表大小可动态调整D,以上均正确题目解析【解析】正确答案C,链表和数组都能排序,链表能存储多少信息,数组就能存储多少信息5.对假设栈S和 队 列 Q的初始状态为空存 在 e 1 e 6六个互不相同的数据,每个数据按照 进 栈 S、出 栈 S、进队列Q、出 队 列 Q的顺序操作,不同数据间的操作可能会交错已知 栈 S中依次有数据e 1、e 2、e 3、e 4、e 5 和 e 6 进栈,队 列 Q依次有数据e 2、e 4、e 3、e 6、e 5 和 e1出队列则 栈 S的容量至少是()个数据A.2B.3C.4D.6题目解析【解析】正确答案B,栈:先入后出,队列:先入先出6.对表达式a+(b-c)*d的前缀表达式为(),其中+、-、*是运算符A.*+a-b c dB.+a*-b c dC.a b c-d*+D.a b c-+d题目解析【解析】正确答案B,画二叉树的形态,写出前序遍历即可7.假 设 字 母 表 a,b,c,d,e)在字符串出现的频率分别为1 0%,1 5%,3 0%,1 6%,2 9%。
若使用哈夫曼编码方式对字母进行不定长的二进制编码,字 母 d的编码长度为()位A.1B.2C.2 或 3D.3题目解析【解 析】正确答案B,哈夫曼编码的构造,注意哈夫曼编码不唯一,但是W P L是唯一的,很容易误选Co8.一 棵 有 n个结点的完全二叉树用数组进行存储与表示,已知根结点存储在数组的第1个位置若存储在数组第9个位置的结点存在兄弟结点和两个子结点,则它的兄弟结点和右子结点的位置分别是()oA.8、1 8B.1 0、1 80.8、1 9D.1 0、1 9题目解析【解析】正确答案C,二叉树的基本知识,数组下标表示法9.考 虑 由 N个顶点构成的有向连通图,采用邻接矩阵的数据结构表示时,该矩阵中至少存在()个非零元素A.N-1B.N0.N+1D.N 2题目解析【解析】正确答案B,有向图连通至少的边围成一个环,且有向图方向一致1 0.以下对数据结构的表述不恰当的一项为:()A.图的深度优先遍历算法常使用的数据结构为栈B.栈的访问原则为后进先出,队列的访问原则是先进先出C.队列常常被用于广度优先搜索算法D.栈与队列存在本质不同,无法用栈实现队列题目解析【解析】正确答案D,栈:先入后出队列:先入先出一个队列存入入队一个队列存储出队1 1 .以下哪组操作能完成在双向循环链表结点P之后插入结点s的 效 果(其中,n e x t 域为结点的直接后继,p r e v域为结点的直接前驱):()A.p-n e x t-p r e v=s;s-p r e v=p;p-n e x t=s;s-n e x t=p-n e x t;B.p-n e x t-p r e v=s;p-n e x t=s;s-p r e v=p;s-n e x t=p-n e x t;C.s-p r e v=p;s-n e x t=p-n e x t;p-n e x t=s;p-n e x t-p r e v=s;D.s-n e x t=p-n e x t;p-n e x t-p r e v=s;s-p r e v=p;p-n e x t=s;题目解析【解析】正确答案D,双链表的插入。
1 2 .以下排序算法的常见实现中,哪个选项的说法是错误的:()A.冒泡排序算法是稳定的B.简单选择排序是稳定的C.简单插入排序是稳定的D.归并排序算法是稳定的题目解析【解析】正确答案B,选择排序不稳定1 3.八进制数3 2.1对应的十进制数是()A.2 4.1 2 5B.2 4.2 5 0C.2 6.1 2 5D.2 6.2 5 0题目解析【解析】正确答案C,进制转换1 4.一个字符串中任意个连续的字符组成的子序列称为该字符串的子串,则字符串a b c a b 有()个内容互不相同的子串A.1 2B.1 30.1 4D.1 5题目解析【解析】正确答案 B,a,b,c,a b,b e,c a,a b c,b c a,c a b,a b c a,b c a b,a b c a b,空串1 5.以下对递归方法的描述中,正确的是:()A.递归是允许使用多组参数调用函数的编程技术B.递归是通过调用自身来求解问题的编程技术C.递归是面向对象和数据而不是功能和逻辑的编程语言模型D.递归是将用某种高级语言转换为机器代码的编程技术题目解析【解析】正确答案B,递归的理解二、阅读程序(程序输入不超过数组或字符串定义的范围;判 断 题 正 确 填 错 误 填 X;除特殊说明外,判 断 题 1.5 分,选 择 题 3分,共 计 40 分)(1).1.#include 2.3.using namespace std;4.5.int main()6.(7.unsigned short x,y;8.cinxy;9.x=(x|x 2)&0 x33;10.x=(x|x 1)&0 x55;11.y=(y|y 2)&0 x33;12.y=(y|y 1)&0 x55;13.unsigned short z=x|y 1;14.coutzendl;15.return 0;16.)假设输入的x、y 均是不超过1 5 的自然数,完成下面的判断题和单选题:I判断题1 6 .删 去 第 7行 与 第 1 3 行 的 un s i g n e d,程序行为不变。
)1 7 .将 第 7行 与 第 1 3 行 的 s h o r t均 改 为 c h ar,程序行为不变)1 8.程序总是输出一个整数“0)1 9 .当输入为“2 2”时,输 出 为“1 0”)2 0.当输入为“2 2”时,输 出 为“5 9”)I单选题2 1.当输入为“1 3 8”时,输 出 为()A.“0”B.“2 09”C.“1 9 7”D.“2 2 6”题目解析【解析】正确答案:1 6:T,1 7:F,1 8:F,1 9:F,2 0:F,2 1:B位运算优先级运算符 高 于I,数据类型的表示范围,i n t和s h o r t以及c h ar数据类型考察,送分题2).1.#include 2.#include 3.#include 4.5.using namespace std;6.7.const in t MAXN=105;8.const in t MANK=105;9.10.in t hMAXNMANK;11.12.in t f(in t n,in t m)13.14.i f(m=1)retu rn n;15.i f(n=0)retu rn 0;16.17.in t re t=n u m e ric_ lim its:m ax();18.fo r(in t i =1;i =n;i+)19.re t=min(r e tm a x(f(n-i,m),f(i-l,m-1)+1);20.retu rn re t;2 1.2 22 3.i n t g(i n t n,i n t m)2 4.(2 5.f o r(i n t i =1;i =n;i+)2 6.h i l=i;2 7.f o r(i n t j =1;j =m;j+)2 8.h 0 j =0;2 9.3 0.f o r(i n t i =1;i =n;i+)3 1.f o r(i n t j =2;j =m;j+)3 2.h i j =n ume r i c _ li mi ts :max();3 3.f o r(i n t k=1;k n m;4 6c o ut f(n m)e n d l m)e n d l;4 7r e tur n 0;4 8)假设输入的n、m 均是不超过1 0 0 的正整数,完成下面的判断题和单选题:I判断题2 2.当输入为“7 3”时,第 1 9 行用来取最小值的mi n 函数执行了 4 4 9 次。
2 3 .输出的两行整数总是相同的2 4 .当 m 为 1时,输出的第一行总为no()I单选题2 5 .算 法 g(n,m)最为准确的时间复杂度分析结果为()A.(3/2 D)B.(m)C.口(口2 口)D.口(口口2)2 6.当输入为“2 0 2”时,输出的第一行为()A.“4”B.“5”0.“6”D.“2 0”2 7.(4分)当 输 入 为“1 0 0 1 0 0”时,输出的第一行为()A.“6”B.70.“8”D.“9”题目解析【解析】正确答案:2 2:F,2 3:T,2 4:T,2 5:0,2 6:0,2 7:B 考察递归,S T L 库,numer ic_l imi ts:max()得到 t i n t 类型的最大值,也就是2 1 4 74 83 64 1,比较难3).1.#include 2.3.using namespace std;5.int nj k;6.7.int solvel()8.9.int 1=0,r=n;10.while(l=r)11.int mid=(l+r)/2;12.if(mid*mid=n)1=mid+1;13.else r=mid-1;14.15.return 1-1;16.17.18.double solve2(double x)19.20.if(x=0)return x;21.for(int i=0;i nk;29.double ans=solve2(solvel();30.coutans (ans*ans=n)endl;31.return 0;32.)假 设 i n t为 3 2 位有符号整数类型,输入的n是不超过4 7 000的自然数、k 是 不 超 过 i n t表示范围的自然数,完成下面的判断题和单选题:I判断题2 8.该算法最准确的时间复杂度分析结果为(lo g 口+口)。
2 9 .当输入为“9 801 1”时,输出的第一个数为“9 9”3 0.对于任意输入的n,随着所输入k 的增大,输出的第二个数会变成“1”3 1 .该程序有存在缺陷当输入的n过大时,第 1 2 行的乘法有可能溢出,因此应当将mi d强制转换为6 4 位整数再计算I单选题3 2 .当输入为“2 1”时,输出的第一个数最接近()A.1B.1.4 1 4C.1.5D.23 3.当输入为“3 1 0”时,输出的第一个数最接近()oA.1.7B.1.7 3 2C.1.7 5D.23 4.当输入为“2 5 6 1 1”时,输出的第一个数()A.等 于 1 6B.接近。
