【计算机类职业资格】二级C++笔试18及答案解析.doc
《【计算机类职业资格】二级C++笔试18及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】二级C++笔试18及答案解析.doc(14页珍藏版)》请在麦多课文档分享上搜索。
1、二级 C+笔试 18 及答案解析(总分:86.00,做题时间:90 分钟)一、B选择题/B(总题数:30,分数:60.00)1.线性表的链式存储结构是一种( )的存储结构。(分数:2.00)A.随机存储B.顺序存储C.索引存储D.散列存储2.有以下程序: #include iostream using namespace std; static int days= 31,28,31,30,31,30,31,31,30,31,30,31 ; class date private: int month,day,year; public: date( int m,int d,int y ) mont
2、h = m; day = d; year = y; date() void disp() coutyear“-“month“-“dayend1; date operator+( iht day ) date dt = * this; day += dt.day; while ( day days dt.month - 1 ) day -= days dt.month - 1 ; if ( +dt.month = 13 ) dt.month = 1; dt.year+; dt.day = day; return dt; ; int main() date dl( 6, 20, 2004 ), d
3、2; d2 = dt + 20; d2.disp(); return 0; 执行后的输出结果是( )。(分数:2.00)A.2004-7-10B.2004-6-20C.2004-7-20D.程序编译时出错3.设有以下说明语句: typedef struct int n; char ch8; PER; 则下面叙述中,正确的是( )。(分数:2.00)A.PER 是结构体变量名B.PER 是结构体类型名C.typedef struct 是结构体类型D.struct 是结构类型名4.下列对字符数组进行初始化的语句中,正确的是( )。(分数:2.00)A.char a=“Hello“;B.chara=
4、H,e,1,1,0;C.char a5=“Hello“;D.char a25=“Hello“,“World“;5.首先访问结点的左子树,然后访问该结点,最后访问结点的右子树,这种遍历称为 ( )。(分数:2.00)A.前序遍历B.后序遍历C.中序遍历D.层次遍历6.有以下程序: #includeiostream using namespace std; int f(int x); int sum(int n) int x,s=0; for(x = 0;x=n;x+) s+=f(x); return s; int f(int x) return (x*x+1); int main() int a
5、,b; cout“Enter a integer number:“; cina; b=sum(a) ; couta“,“bend1; return 0; 如果输入数字 3,其输出结果是( )。(分数:2.00)A.3,12B.3,16C.3,18D.4,207.以下选项中,( )是合法的用户标识符。(分数:2.00)A.longB._2TestC.3DmaxD.dat8.若以下定义: struct link int data; struct link *next; a,b,C,*p,*q; 且变量 a 和 b之间已有下图所示的链表结构。 (分数:2.00)A.next=c;next=b;B.n
6、ext=q;next=next;C.q-next=p-next;p-next= int main() ofstream ofile; char ch; ofile.open(“d:/abc.txt“, W); do cinch; ofile.put(ch); while(ch!=#); ofile.close(); return 0; 程序出错的原因是( )。(分数:2.00)A.成员函数 open 调用形式错误B.输入文件没有关闭C.成员函数 put 调用形式错误D.对象 ofile 定义错误27.为完成下面的程序,应在划线处填入的语句是( )。 #include iostream usin
7、g namespace std; class Base private: int x; public: Base(int i) x=i; Base() ; class Derived : public Base public: _ /完成类 Derive 构造函数的定义 ; int main() Derived Obj; return 0; (分数:2.00)A.Derived(int :Base(B.Derived()C.voidDerived(int :Base(0)D.Derived(int Base(;29.自顶向下分析方法从文法的开始符号出发,判断其能否( )出输入符号串。(分数:2
8、.00)A.归纳B.归约C.推理D.推导30.以下程序段的输出结果是( )。 char str = “BCDE“,*ptr=str; cout*(p+4)end1;(分数:2.00)A.字符 E 的地址B.0C.69D.不确定二、B填空题/B(总题数:13,分数:26.00)31.一个节点的子节点个数称为该节点的U 【1】 /U。(分数:2.00)填空项 1:_32.类是一个支持集成的抽象数据类型,而对象是类的U 【2】 /U。(分数:2.00)填空项 1:_33.软件测试分 4 个步骤进行,即单元测试、集成测试、确认测试和U 【3】 /U。(分数:2.00)填空项 1:_34.U【4】 /U
9、是在进行了成功的测试之后才开始的。它与软件测试不同,测试的目的是发现错误,进一步诊断和改正错误,则是调试的任务。(分数:2.00)填空项 1:_35.数据库系统由数据库、U 【5】 /U、硬件平台、数据库管理员和软件平台所组成。(分数:2.00)填空项 1:_36.有以下程序: #includeiostream using namespace std; int main() int i=1,sum=0; Loop:if(i=20) sum+=i; i+; goto Loop; coutsumend1; return 0; 该程序运行后的输出结果是U 【6】 /U。(分数:2.00)填空项 1:
10、_37.fun()函数的功能是:首先对 a 所指的 N 行 N 列的矩阵,找出各行中的最大的数,再求这 N 个最大值中的最小的那个数作为函数返回值。请填空完成此程序。 #define N 100 int fun(int (*A) N) int row,col,max,min; for(row=0;row填空项 1:_38.下面程序的运行结果是U 【9】 /U。 #include iostream using namespace std; void fun(int day = d; year = y; date() void disp() coutyear“-“month“-“dayend1;
11、date operator+( iht day ) date dt = * this; day += dt.day; while ( day days dt.month - 1 ) day -= days dt.month - 1 ; if ( +dt.month = 13 ) dt.month = 1; dt.year+; dt.day = day; return dt; ; int main() date dl( 6, 20, 2004 ), d2; d2 = dt + 20; d2.disp(); return 0; 执行后的输出结果是( )。(分数:2.00)A.2004-7-10 B
12、.2004-6-20C.2004-7-20D.程序编译时出错解析:解析 本题通过将“+”运算符重载为类 date 的成员函数实现简单的对象加法。类 date 中的“+”运算符重载函数中,将传入的实参值 day,加到类 date 的私有成员变量 day 上,并实现变量 month和 year 的相应变化,从而达到日期对象相加的目的。3.设有以下说明语句: typedef struct int n; char ch8; PER; 则下面叙述中,正确的是( )。(分数:2.00)A.PER 是结构体变量名B.PER 是结构体类型名 C.typedef struct 是结构体类型D.struct 是结
13、构类型名解析:解析 本题考核用 typedef 定义自己的变量类型。C+语言允许定义用关键字 typedef 所命名的新的数据类型。实际上,没有建立一个新的数据类型,而仅是对存在的类型定义了一个新的名字。所定义的新名是现有的类型名的补充,而不是取代。4.下列对字符数组进行初始化的语句中,正确的是( )。(分数:2.00)A.char a=“Hello“; B.chara=H,e,1,1,0;C.char a5=“Hello“;D.char a25=“Hello“,“World“;解析:解析 本题考查对字符数组的初始化。 选项 A 中,数组 a 在定义后紧跟初始化的情况下可省略数组长度,其最终数
14、组长度由所赋字符串常量的长度给定。选项 A 是正确。 选项 B 中,a 是一个二维数组,二维数组也能在定义时被初始化。如果对全部元素都赋初值,则定义数组时第一维的大小可以忽略,但第二维的大小不能省略。故选项 B 是错误。 选项 C 和选项 D 都忽略了字符串的大小要比字符串中的字符数多 1 这一点,造成了数组的越界。5.首先访问结点的左子树,然后访问该结点,最后访问结点的右子树,这种遍历称为 ( )。(分数:2.00)A.前序遍历B.后序遍历C.中序遍历 D.层次遍历解析:解析 前序遍历是指若二叉树为空树,则空操作:否则:访问根节点:先序遍历左子树:先序遍历右子树。中序遍历二叉树是指若二叉树为
15、空树,则空操作:否则,中序遍历左子树;访问根节点;中序遍历右子树。后序遍历二叉树是指若二叉树为空树,则空操作;否则,后序遍历左子树;后序遍历右子树;访问根节点。因为根节点是在中间访问的,即中序遍历。6.有以下程序: #includeiostream using namespace std; int f(int x); int sum(int n) int x,s=0; for(x = 0;x=n;x+) s+=f(x); return s; int f(int x) return (x*x+1); int main() int a,b; cout“Enter a integer number:
16、“; cina; b=sum(a) ; couta“,“bend1; return 0; 如果输入数字 3,其输出结果是( )。(分数:2.00)A.3,12B.3,16C.3,18 D.4,20解析:解析 这还是有关调用函数的程序,而且有两层关系。根据程序逐步分析: 本程序包含了 3 个函数,其中主函数 main 调用了 sam()函数,而在 sum()函数中又调用了 f 函数。 在主函数中,先从键盘输入一整数,并赋值给 a。在这里题目开始已给出输入的是整数 3,调用函数 sum(),并把 3 传值给形参 n,最后输出 a,b 的值。 在 sum()函数中,有一个 for 循环语句,在每次循
17、环时调用函数 f,并把当前的 x 值传给形参 x,循环结束后,返回 s 值。 在 f()函数中,变量 x 接收实参的值后,执行表达式“x*x+1”,并返回表达式的运算结果。 在 sum()函数中,由于 n 值为 3,不难看出,当x=0、x=1、x=2 和 x=3 时,都能执行循环体,即调用函数 f,第 1 次循环更改 s 值为 1,第 2 次循环更改s 值为 3, 第 3 次更改为 8,第 4 次更改为 18,也就是最后一次循环,即最终 sum()返回值将是 18。 在主函数收到 sum()函数的返回值,并输出 3,18。7.以下选项中,( )是合法的用户标识符。(分数:2.00)A.long
18、B._2Test C.3DmaxD.dat解析:分析 有关用户标识符的考题经常在考试中出现,考生应该重视。选项 A 中 long 是 C+语言保留字,不能用于用户标识符。选项 C 中的 3Dmax,它的第一个字符是数字 3,不是所规定字母或下划线,所以也不是合法的用户标识符。选项 D 中的 A.dat,它中间出现了符号“.”,不符合标识符的定义规则。所以只有选项 B 中的标识符是合法的 C+标识符。8.若以下定义: struct link int data; struct link *next; a,b,C,*p,*q; 且变量 a 和 b之间已有下图所示的链表结构。 (分数:2.00)A.n
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 二级 笔试 18 答案 解析 DOC
