【计算机类职业资格】二级C++笔试23及答案解析.doc

上传人:arrownail386 文档编号:1324711 上传时间:2019-10-17 格式:DOC 页数:12 大小:72.50KB
下载 相关 举报
【计算机类职业资格】二级C++笔试23及答案解析.doc_第1页
第1页 / 共12页
【计算机类职业资格】二级C++笔试23及答案解析.doc_第2页
第2页 / 共12页
【计算机类职业资格】二级C++笔试23及答案解析.doc_第3页
第3页 / 共12页
【计算机类职业资格】二级C++笔试23及答案解析.doc_第4页
第4页 / 共12页
【计算机类职业资格】二级C++笔试23及答案解析.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、二级 C+笔试 23 及答案解析(总分:96.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.有以下语句,则对 a 数组元素的引用不正确的是(0i9) int a10=0,1,2,3,4,5,6,7,8,9,*p=a;(分数:2.00)A.ap-aB.*( for(i=1,i= NUM;i+) couti; 该程序中的 for 循环执行的次数是(分数:2.00)A.5B.6C.7D.820.若有说明语句 char a =“It is mine“; char * p=“It is mine“; 则以下不正确的叙述是(分数:2.00)A.a+1 表示的是字符 t

2、的地址B.p 指向另外的字符串时,字符串的长度不受限制C.p 变量中存放的地址值可以改变D.a 中只能存放 10 个字符21.所有在函数中定义的变量,连同形式参数,都属于(分数:2.00)A.全局变量B.局部变量C.静态变量D.寄存器变量23.在 C+语言中,封装是借助于什么达到的?(分数:2.00)A.结构B.类C.数组D.函数24.以下程序的输出结果是 #includeiostream.h void main( ) int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j3;j+) if(j%2)continue; x+; x+; cout “x=“x;(分数:2

3、.00)A.x=4B.x=8C.x=6D.x=1225.若执行下面的程序时,从键盘上输入 5 和 2,则输出结果是 #includeiostream.h void main( ) int a,b,k; cin a b; k=a; if(ab) k=a%b; else k=b%a; cout k endl;(分数:2.00)A.5B.3C.2D.026.有如下程序: #includeiostream.h long fib(int n) if(n2)return(fib(n-1)+fib(n-2); else return(2); void main( ) coutfib(3); 该程序的输出结果

4、是(分数:2.00)A.2B.4C.6D.827.关于虚函数下面说的正确的是(分数:2.00)A.若在重定义虚函数时使用了 virtual,则该重定义函数还是虚函数B.虚函数不能声明为友元C.子类必须重定义父类的虚函数D.虚函数不能是 static 的28.NULL 是指(分数:2.00)A.0B.空格C.未知的值或无任何值D.空字符串29.有以下程序 #includeiostream.h float fun(int x,int y) return(x+y); void main( ) int a=2,b=5,c=8; coutfun(int)fun(a+c,b) ,a-c) ;程序运行后的输

5、出结果是(分数:2.00)A.编译出错B.9C.21D.9.030.已知数据表 A 中每个元素距其最终位置不远,为节省时间,应采用的算法是(分数:2.00)A.堆排序B.直接插入排序C.快速排序D.直接选择排序31.如果表达式+x/y 中,+是作为友元函数重载的,/是作为成员函数重载的,则该表达式还可为(分数:2.00)A.(operator+().operator/(B.(operator+(0).operator/(C.operator/(operator+(x,0),D.operator/(operator+(0),32.下面程序的结果是 #includeiostream.h class

6、 A public: A( ) cout“construtA“endl; virtualA( ) cout“destructA“endl; class B:public A ; class C:public A ; class D:public B,public C ; void main( ) D d;(分数:2.00)A.constructA destructAB.constructA constructA destructA destructAC.constructA constructA constructA destructA destructA destructAD.constru

7、ctA onstructA constructA constructA destructA destructA destructA destructA33.下列程序的输出结果是 #includeiostream.h int b=2; int func(int *a) b+=*a;return(b) ; void main( ) int a=2,res=2; res+=func( couta; coutendl;(分数:2.00)45.静态成员函数可以直接访问类的U 【11】 /U成员,不能直接访问类的U 【12】 /U成员。(分数:2.00)46.请定义一个函数名为 A,返回值为 int,没有

8、参数的纯虚函数的定义是U 【13】 /U。(分数:2.00)填空项 1:_47.表达式 x.operator+(y.operator+(0)还可以写成U 【14】 /U。(分数:2.00)填空项 1:_48.假设 fin 是一个文件流对象,则关闭文件的语句是U 【15】 /U。(分数:2.00)填空项 1:_二级 C+笔试 23 答案解析(总分:96.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.有以下语句,则对 a 数组元素的引用不正确的是(0i9) int a10=0,1,2,3,4,5,6,7,8,9,*p=a;(分数:2.00)A.ap-aB.*(

9、for(i=1,i= NUM;i+) couti; 该程序中的 for 循环执行的次数是(分数:2.00)A.5B.6 C.7D.8解析:解析 这是一种简单的情况:不带参数的宏。关键要注意在对 2*M+1 进行宏替换时,要将宏名 M原样替换,得到 NUM 的形式为 2*N+1+1(千万不要随意把给 N+1 加上小括号,使 NUM 变为 2* (N+1)+1,这就是宏名和变量名之间的区别)。20.若有说明语句 char a =“It is mine“; char * p=“It is mine“; 则以下不正确的叙述是(分数:2.00)A.a+1 表示的是字符 t 的地址B.p 指向另外的字符串

10、时,字符串的长度不受限制C.p 变量中存放的地址值可以改变D.a 中只能存放 10 个字符 解析:解析 本题考查字符串数组和指针的引用方式。在 C+语言中,系统在每个字符串或数组的最后自动加入一个字符/0,作为字符的结束标志,在本题中,char a=“It is mine“;所表示的 a 字符串实际含有 11 个字符。21.所有在函数中定义的变量,连同形式参数,都属于(分数:2.00)A.全局变量B.局部变量 C.静态变量D.寄存器变量解析:解析 C+语言函数中定义的变量都是属于这个函数的局部变量。解析:解析 本题中直接使用指针变量 k,但在使用时要注意对 k 的指针运算,此外,一开始应认为

11、*k的值为数组中的某一下标值,即*k=0。23.在 C+语言中,封装是借助于什么达到的?(分数:2.00)A.结构B.类 C.数组D.函数解析:解析 C+基本的性质就是它的封装性,而封装性主要是靠类来实现的。24.以下程序的输出结果是 #includeiostream.h void main( ) int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j3;j+) if(j%2)continue; x+; x+; cout “x=“x;(分数:2.00)A.x=4B.x=8 C.x=6D.x=12解析:解析 该题是一个 for 循环嵌套语句。第一层 for 循环循环

12、2 次,第二层循环 3 次,但当 j 等于 0 和 1 时,将执行 continue 语句,不执行 x+运算,所以每次执行完内循环后,x 的增量为 1。最后一个x+运算将每次累加起来就是 x 的值。25.若执行下面的程序时,从键盘上输入 5 和 2,则输出结果是 #includeiostream.h void main( ) int a,b,k; cin a b; k=a; if(ab) k=a%b; else k=b%a; cout k endl;(分数:2.00)A.5B.3C.2 D.0解析:解析 本题考查简单的 ifelse 语句。先执行条件 if(aB,显然不成立,则执行 else

13、语句。26.有如下程序: #includeiostream.h long fib(int n) if(n2)return(fib(n-1)+fib(n-2); else return(2); void main( ) coutfib(3); 该程序的输出结果是(分数:2.00)A.2B.4 C.6D.8解析:解析 fib(3)=fib(2)+fib(1),而 fib(2)的返回值为 2,fib(1)的返回值也为 2,故输出的 fib (3)的值为 4。27.关于虚函数下面说的正确的是(分数:2.00)A.若在重定义虚函数时使用了 virtual,则该重定义函数还是虚函数B.虚函数不能声明为友元

14、C.子类必须重定义父类的虚函数D.虚函数不能是 static 的 解析:解析 虚函数一定不能定义为静态的。虚函数可以声明为友元,子类也不是必须重定义父类的虚函数,若在重定义虚函数时使用了 virtual,则该重定义函数不一定还是虚函数。28.NULL 是指(分数:2.00)A.0B.空格C.未知的值或无任何值 D.空字符串解析:解析 此题属于记忆性的题目,NULL 是指未知的值或无任何值。29.有以下程序 #includeiostream.h float fun(int x,int y) return(x+y); void main( ) int a=2,b=5,c=8; coutfun(in

15、t)fun(a+c,b) ,a-c) ;程序运行后的输出结果是(分数:2.00)A.编译出错B.9 C.21D.9.0解析:解析 本题的运算过程是 fun(int)fun (a+c,B,a-C,fun(int)fun(10,5),2-8),fun (int)15.000000,-6),fun(15,-6)=9。30.已知数据表 A 中每个元素距其最终位置不远,为节省时间,应采用的算法是(分数:2.00)A.堆排序B.直接插入排序 C.快速排序D.直接选择排序解析:解析 当数据表 A 中每个元素距其最终位置不远,说明数据表 A 按关键字值基本有序,在待排序序列基本有序的情况下,采用插入排序所用时

16、间最少,故答案为选项 B。31.如果表达式+x/y 中,+是作为友元函数重载的,/是作为成员函数重载的,则该表达式还可为(分数:2.00)A.(operator+().operator/( B.(operator+(0).operator/(C.operator/(operator+(x,0),D.operator/(operator+(0),解析:解析 C+中用成员函数重载+x 为:x.operator+(),用友元函数重载+x 为:operator +(x),用成员函数重载 x/y 为:x.operator/(y),用友元函数重载 x/y 为:operator/(x,y)。32.下面程序的

17、结果是 #includeiostream.h class A public: A( ) cout“construtA“endl; virtualA( ) cout“destructA“endl; class B:public A ; class C:public A ; class D:public B,public C ; void main( ) D d;(分数:2.00)A.constructA destructAB.constructA constructA destructA destructA C.constructA constructA constructA destructA

18、 destructA destructAD.constructA onstructA constructA constructA destructA destructA destructA destructA解析:解析 类 D 继承了类 C 和类 B,所以在构造的时候分别构造类 B 和类 C。33.下列程序的输出结果是 #includeiostream.h int b=2; int func(int *a) b+=*a;return(b) ; void main( ) int a=2,res=2; res+=func( couta; coutendl;(分数:2.00)解析:9j+=2 10a

19、i=aj或 aiaj 解析 strlen 函数是测试字符串长度的函数,函数的值为字符串中的实际长度,不包括/0在内。45.静态成员函数可以直接访问类的U 【11】 /U成员,不能直接访问类的U 【12】 /U成员。(分数:2.00)解析:11静态 12非静态 解析 静态成员函数可以直接访问该类中的静态数据成员,而不能访问该类中的非静态数据成员。46.请定义一个函数名为 A,返回值为 int,没有参数的纯虚函数的定义是U 【13】 /U。(分数:2.00)填空项 1:_ (正确答案:virtual int A()=0;)解析:解析 C+语言中的纯虚函数是一种特殊的函数,它没有自己的定义,只有声明

20、,纯虚函数与虚函数声明的不同就在于在函数后面加上了“=0”。47.表达式 x.operator+(y.operator+(0)还可以写成U 【14】 /U。(分数:2.00)填空项 1:_ (正确答案:x+y+或 x+(y+))解析:解析 因为 y.operator+(0)是对成员 y 重载运算符,所以是成员重载,在参数表中又有一个参数,是重载后缀+,即是 x+(y+)。48.假设 fin 是一个文件流对象,则关闭文件的语句是U 【15】 /U。(分数:2.00)填空项 1:_ (正确答案:fin)解析:解析 如果程序没有用 close()主动关闭文件,则在文件流对象退出作用域时,被调用的析构函数会关闭对象所联系的文件。但应及时关闭,以便尽早释放占用的系统资源并将文件置于更安全的状态。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1