【计算机类职业资格】二级C++笔试-233及答案解析.doc
《【计算机类职业资格】二级C++笔试-233及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】二级C++笔试-233及答案解析.doc(31页珍藏版)》请在麦多课文档分享上搜索。
1、二级 C+笔试-233 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.有如下程序main( )int n=9;while(n6)n- -;coutnendl;)该程序段的输出结果是(分数:2.00)A.987B.876C.8765D.98762.以下关于友元函数的叙述不正确的是(分数:2.00)A.友元函数提供了类之间数据共享的一个途径B.一个友元函数可以访问任何类的任何成员C.友元函数破坏了数据的封装D.友元函数增加了程序设计的灵活性3.有如下函数模板声明:templatetypename TT Max(T a,T b)return(a
2、=b)? a:b;下列对函数模板 Max( )的调用中错误的是(分数:2.00)A.Max(3.5,4.5)B.Max(3.5,4)C.Maxdouble(3.5,4.5)D.Maxdouble(3.5,4)4.如果表达式- -x/y 中的“- -”和“/”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可以表示为(分数:2.00)A.operator /(x.operator- -( ),y);B.operator /(operator- -(x),y);C.operator- -( ).Operator /(y);D.operator /(operator- -(x);5.软
3、件开发的结构生命周期法的基本假定是认为软件需求能做到(分数:2.00)A.严格定义B.初步定义C.早期冻结D.动态改变6.已知语句 int m=10;则下列引用的表示中正确的是(分数:2.00)A.intB.intC.intD.float7.有以下程序main( )int a=5,b=4,c=3,d=2;if(abc)coutdendl;else if(c-1=d)=1)coutd+1endl;elsecoutd+2endl;执行后输出结果是(分数:2.00)A.2B.3C.4D.编译时有错,无结果8.以下程序的输出结果是int a,b;void fun( )a=100;b=200;)main
4、( )int a=5,b=7;fun( );coutabendl;(分数:2.00)A.100200B.57C.200100D.759.下列程序的输出结果是main( )int x=1,a=0,b=0;switch(x)case 0:b+;case 1:a+;case 2:a+;b+;cout“a=“a“b=“bendl;(分数:2.00)A.a=2 b=1B.a=1 b=1C.a=1 b=0D.a=2 b=210.有关构造函数的叙述不正确的是(分数:2.00)A.构造函数名必须和类名一致B.构造函数在定义对象时自动执行C.构造函数无任何函数类型D.在一个类中构造函数有且仅有一个11.有以下程
5、序main( )int i=1,j=1,k=2;if(j+| k+)执行后输出结果是(分数:2.00)A.1,1,2B.2,2,1C.2,2,2D.2,2,312.设有语句int n,m;char a5,b;cinnamb;为了分别将 10 和 20 分别赋给 n 和 m,look 赋给 a,t 赋给 b,则正确的输入为(分数:2.00)A.10“look“ 20tCRB.10“look“10C.10 look 20 tD.10CRlook20CRtCR13.为了避免嵌套的 ifelse 语句的二义性,C+规定与 else 配对的是(分数:2.00)A.缩排位置相同的 ifB.在其之前未配对的
6、 ifC.在其之前未配对的最近的 ifD.同一行上的 if14.下列程序的运行结果是main( )int a=2,c=5;cout“a=“a“b=“cendl;(分数:2.00)A.a=% b=%5B.a=2 b=5C.a=d b=dD.a=%d b=%d15.以下选项中合法的实型常数是(分数:2.00)A.5 E 2.0B.E-3C2 E0D.1.3 E16.对于以下带参数的 main( )函数的第二形参,void main(int argc,_),不可能的形式是(分数:2.00)A.char*argvB.char argvC.char*aD.char*m17.执行完下列语句int a,b,
7、c=int*p=后 c 指向(分数:2.00)A.aB.bC.cD.无效地址18.有以下程序:#includeiostreamusing namespace std;int main( )int x=15;while(x10if(x/3)x+; break;coutxendl;return 0;执行后的输出结果是(分数:2.00)A.15B.16C.17D.1819.以下循环体的执行次数是main( )int i,j;for(i=0,j=1;i=j+1;i+=2,j- -)coutiendl;(分数:2.00)A.3B.2C.1D.020.下列说法中不正确的是(分数:2.00)A.数据库减少了
8、数据冗余B.数据库中的数据可以共享C.数据库避免了一切数据的重复D.数据库具有较高的数据独立性21.以下函数值的类型是fun(float x)float y;y=3*x-4;return y;(分数:2.00)A.intB.不确定C.voidD.float22.一个关系中属性个数为 1 时,称此关系为(分数:2.00)A.对应关系B.单一关系C.一元关系D.二元关系23.假定 MyClass 为一个类,则该类的拷贝构造函数的声明语句为(分数:2.00)A.Myclasselse return n*f(n+1);B.int f(int n)if(n1)return 1;else return n
9、*f(n-1);C.int f(int n)if(abs(n)1)return 1;else return n*f(n/2);D.int f(int n)if(n1)return 1;else return n*f(n*2);)29.假定其中的 x 的单位是角度且不考虑 值的精度,则与数学公式 (分数:2.00)A.sqrt(cos(x)B.sqrt(abs(cos(x*3.14/180)C.sqrt(abs(cos(x*(/180)D.sqrt(fabs(cos(x*3.14/180)30.完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是(分数:2.00)A.黑
10、箱测试法B.白箱测试法C.错误推测法D.安装测试法31.执行下面程序中的输出语句后,a 的值是main( )int a;cout(a=3*5,a*4,a+5);(分数:2.00)A.65B.20C.15D.1032.设有两个串 p 和 q,求 q 在 p 中首次出现位置的运算称作(分数:2.00)A.连接B.模式匹配C.求子串D.求串长33.最简单的交换排序方法是(分数:2.00)A.快速排序B.选择排序C.堆排序D.冒泡排序34.若已定义int a=1,2,3,4,5,6,7,8,9,10,p=a,i=5;则对数组元素的不正确的引用是(分数:2.00)A.ap-aB.*(for(int i=
11、0;strli=str2i;i+);后,数组 strl 中的字符串是_。(分数:2.00)填空项 1:_42.下列程序的执行结果是_。#includelostream.hint a;int sum_a(void)a=a+5;return a;void main(void)a=a+sum_a( );coutaendl;(分数:2.00)填空项 1:_43.根据输出结果填空完成下面程序。#includeiostream.hclass Testprivate:static int val;int a;public:static int func( );void sfunc(Test ;_/初始化静态
12、变量 valint Test:func( )return val+;void Test:sfunc(Test cout“Result3=“r.a;void main( )cout“Resultl=“Test:func( )endl;Test A;cout“Result2=“A.fune( )endl;A. sfunc(A);输出结果为:Result1=201Result2=202Result3=125(分数:2.00)填空项 1:_44.下列程序的运行结果是_。#includeiostream.hclass testprivate:int hum;public:test( );int TEST
13、( )return num+100;)test( );test:test( )num=0;)test:test( )cout“Destructor is active“endl;)void main( )test x3;coutx1.TEST( )endl;(分数:2.00)填空项 1:_45.请将下列类定义补充完整。class Basepublic:void fun( )cout“Base:fun“endl;class Derived:public Basepublic:void fun( )_/显式调用基类的 fun 函数cout“Derived:fun“endl;(分数:2.00)填空项
14、 1:_46.有以下程序:#includeiostream.hclass Aint x;public:A(int a)x=a;friend class B;Class Bpublic:void print(A a)a.x- -;couta.xendl;void main()A a(10);B b;b.print(a);程序执行后的输出结果是_(分数:2.00)填空项 1:_47.下列程序编译时发现 pb-f(10);语句出现错误,其原因是_。#includeiostream.hclass Basepublic:void f(int x)cout“Base:“xendl;);class Deri
15、ved:public Basepublic:void f(char*str)cout“Derived:“strendl;void main(void)Derived*pd=new Derived;Pd-f(10);(分数:2.00)填空项 1:_48.下列程序的运行结果是_。#includeiostream.hclass SomeClasspublic:SomeClass(int value) some value=value; );void show_data(voiD) coutdatasome_valueendl; ;static void set_data(int value) dat
16、a=value; ;private:static int data;int some_value;int SomeClass:data=0;void main(void)SomeClass my_class(1001), your_class(2002);your_class.set_data(4004);my_class.show_data( );(分数:2.00)填空项 1:_49.有以下程序:#includediostreamusing namespace std;class Basepublic:Base( )x=0;int x;class Derived1:virtual publi
17、c Basepublic:Derived1( )x=10;class Derived2:virtual public Basepublic:Derived2( )x=20;class Derived: public Derived1,protected Derived2;int main( )Derived obj;coutobj. xendl;return 0;该程序运行后的输出结果是_。(分数:2.00)填空项 1:_50.下列程序对加号进行了重载,划线部分的语句是_。#includeiostream.h#includemath.hclass Triangleint x,y,z;doubl
18、e area;public:Triangle(int i,int j,int k)double s;x=i;y=j;z=k;s=(x+y+z)/2.0;area=sqrt(s*(s-x)*(s-y)*(s-z);void disparea( )cout“Area=“areaendl;friend double operator+(Triangle tl,Triangle t2)_;void main( )Triangle tl(3,4,5),t2(5,12,13);double s;cout“tl:“;t1. disparea( );cout“t2:“;t2. disparea( );s=t1
19、+t2:cout“总面积:=“sendl;(分数:2.00)填空项 1:_二级 C+笔试-233 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.有如下程序main( )int n=9;while(n6)n- -;coutnendl;)该程序段的输出结果是(分数:2.00)A.987B.876 C.8765D.9876解析:解析 注意到 n- -的运算顺序,知道第一次输出的应是 8,据此就可以很快排除 A 和 D。然后判断循环几次结束,由于当 n=6 时,while 的条件判断已经不成立了,直接跳过循环体结束程序了。故当n=9,8,7 时执行
20、了循环体,故答案为 B。2.以下关于友元函数的叙述不正确的是(分数:2.00)A.友元函数提供了类之间数据共享的一个途径B.一个友元函数可以访问任何类的任何成员 C.友元函数破坏了数据的封装D.友元函数增加了程序设计的灵活性解析:解析 友元的作用在于提高程序的运行效率,但是,它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。容易混淆是 B,只有在类中声明了某个函数是自己的友元函数之后,该友元函数才能够访问本类的私有成员,而不是任何类的任何成员都可以访问。故答案为 B。3.有如下函数模板声明:templatetypename TT Max(T a,T b)return(a=b)?
21、a:b;下列对函数模板 Max( )的调用中错误的是(分数:2.00)A.Max(3.5,4.5)B.Max(3.5,4) C.Maxdouble(3.5,4.5)D.Maxdouble(3.5,4)解析:解析 本题考核函数模板的使用。引用模板函数和引用一般的函数在语法形式上没有任何区别。所有的类型替换都是编译器在幕后悄悄进行的。但是要注意的是说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确定是否匹配函数模板中对应的形参。例如,本题中的 B选项,编译系统从第一个参数“3.5“获得的信息是“T 对应于 double“,而从第二个参数“4“处获得的信息是“T 对应于
22、 int“,二者相互矛盾,在编译时会产生错误。对于 D 选项中紧跟在函数名后的double就是模板实参表,通过它通知编译系统在调用过程中,将 int 型的参数“4“将换成 double 型。4.如果表达式- -x/y 中的“- -”和“/”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可以表示为(分数:2.00)A.operator /(x.operator- -( ),y);B.operator /(operator- -(x),y); C.operator- -( ).Operator /(y);D.operator /(operator- -(x);解析:解析 本题考核运
23、算符的重载。假定已经作为某个类的成员函数重载了二元运算符+,且 c1、c2都是该类的对象,则 c1.operator+(c2)与 c1+c2 含义相同。如果+作为该类的非成员函数重载,则operator+(cl,c2)与 c1+c2 含义相同。同理,运算符“/”作为友元函数重载,则(- -x)/y 与表达式operator/(- -x),y)相同。前缀运算符“- -”作为友元函数重载,则- -x 与 operator- -(x)相同,所以组合起来是 operator/(operator- -(x),y);,即 B 选项。5.软件开发的结构生命周期法的基本假定是认为软件需求能做到(分数:2.00
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 二级 笔试 233 答案 解析 DOC
