1、国家计算机二级(C+)91 及答案解析(总分:460.00,做题时间:120 分钟)一、选择题(每小题 2 分,共 70 分) 下列各(总题数:35,分数:70.00)1.在 C+语言中,打开一个文件就是将这个文件与一个什么建立关联?(分数:2.00)A.流B.类C.结构D.对象2.C+语言中标点符号中表示一条预处理命令开始的是( )。(分数:2.00)A.#B.;C.3.有如下类定义: Class MyClass int value; public: MyClass(int n): value(n) int getValue()constreturn value; ; 则类 MyClass
2、的构造函数的个数是 (分数:2.00)A.1 个B.2 个C.3 个D.4 个4.不合法的 main 函数命令行参数表示形式是( )。(分数:2.00)A.main(inta,char*c)B.main(intarc,char*arv)C.main(intargc,char*argv)D.main(intargv,char*argc)5.下面程序的运行结果是( )。 #ncludeiostream.h int fun(inta,int n) int result=1; for(int i=1;in;+) result=result*ai; return result; void main( )
3、 int a3 =3,4,5; coutfun(a,3)endl; (分数:2.00)A.2B.0C.-2D.16.已知 Value 是一个类,value 是 Value 的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是(分数:2.00)A.Value operator+(Value v, int i);B.Value operator+(Value vvalue, int i);C.Value operator+(Value v, int i0);D.Value operator+(Value v=value, int i=0);7.有以下程序段 struct st int
4、x;int *y;*pt; int a=1,2,b=3,4; struct st c2=10,a,20,b; pt=c; 以下选项中表达式的值为 11 的是_。(分数:2.00)A.*pt-yB.pt-xC.+pt-xD.(pt+)-x8.有如下说明 int a10: 1,2,3,4,5,6,7,8,9,10 ,* p=a; 则数值为 9 的表达式是( )。 (分数:2.00)A.*p+9B.*(p+8)C.*p+=9D.p+89.若有说明 int a34;,则 a 数组元素的非法引用是( )。(分数:2.00)A.123B.2.5C.-12D.156310.所有在函数中定义的变量,连同形式参
5、数,都属于( )。(分数:2.00)A.全局变量B.局部变量C.静态变量D.寄存器变量11.下面程序的执行结果是( )。 #include“ iostreamh“ void main( ) int * p,r; p=new in; * p=20; r=sizeof(* p); cout r end1; delete p; (分数:2.00)A.CDateB.IsDateC.DateD.IsText12.在 C+语言中,打开一个文件就是将这个文件与一个什么建立关联?(分数:2.00)A.被显示的字符串可以使用多种字体B.一行中最大的字符数是 40C.显示的宽度正好是 40 个字符宽D.用户可以编
6、辑字符13.下列选项,不正确的是( )。(分数:2.00)A.for(int a=1;a0) str2*i=stri; str2*i-1= *; i-; printf(“%s/n“,str); main2 char str40; scanf(“%s/n“,str); insert(str); (分数:30.00)填空项 1:_国家计算机二级(C+)91 答案解析(总分:460.00,做题时间:120 分钟)一、选择题(每小题 2 分,共 70 分) 下列各(总题数:35,分数:70.00)1.在 C+语言中,打开一个文件就是将这个文件与一个什么建立关联?(分数:2.00)A.流 B.类C.结构
7、D.对象解析:C+的 I/O 系统是通过一种称为流的机制来实现文件和控制台的 l/O 操作。简单地说,在 C+中,输入输出操作是通过流来完成的。而文件流以磁盘文件以及其他可按文件方式进行管理的外部设备为输入输出对象。每个文件流都应当与一个打开的文件相联系;关闭一个文件就是取消这种联系。2.C+语言中标点符号中表示一条预处理命令开始的是( )。(分数:2.00)A.# B.;C.解析:C+语言中预处理语句的开始符号是#。3.有如下类定义: Class MyClass int value; public: MyClass(int n): value(n) int getValue()constre
8、turn value; ; 则类 MyClass 的构造函数的个数是 (分数:2.00)A.1 个 B.2 个C.3 个D.4 个解析:4.不合法的 main 函数命令行参数表示形式是( )。(分数:2.00)A.main(inta,char*c)B.main(intarc,char*arv)C.main(intargc,char*argv) D.main(intargv,char*argc)解析:在 C+语言里,main 函数也可以有参数,例如:main(int arvc,char*argv),argc 是指向字符串的指针数组,而选项 C)是第二个形参是指向字符变量的指针,是错误的。5.下面
9、程序的运行结果是( )。 #ncludeiostream.h int fun(inta,int n) int result=1; for(int i=1;in;+) result=result*ai; return result; void main( ) int a3 =3,4,5; coutfun(a,3)endl; (分数:2.00)A.2B.0 C.-2D.1解析:单目的+运算优先级高于双目的+运算,不过+的结合性是自右向 左的,而+是自左至右的,所以上面的两个表达式都是先计算 a+b 的值之后,a 再自加 1。6.已知 Value 是一个类,value 是 Value 的一个对象。下
10、列以非成员函数形式重载的运算符函数原型中,正确的是(分数:2.00)A.Value operator+(Value v, int i);B.Value operator+(Value vvalue, int i); C.Value operator+(Value v, int i0);D.Value operator+(Value v=value, int i=0);解析:类名 operator+(类名 String int *y;*pt; int a=1,2,b=3,4; struct st c2=10,a,20,b; pt=c; 以下选项中表达式的值为 11 的是_。(分数:2.00)A.
11、*pt-yB.pt-xC.+pt-x D.(pt+)-x解析:此题主要考核的是结构体类型的指针。题目中定义了一个 st 结构体类型,然后定义了 st 型的结构体 指针变量*pt 及结构体数组 c,并对结构体数组进行了初始化,且将结构体指针变量 pt 指向了数组 c,则 pt-x 的值为 10,则+pt-x 的值为 11(注:“-”运算符的优先级高于“+”),故选项 C 正确。8.有如下说明 int a10: 1,2,3,4,5,6,7,8,9,10 ,* p=a; 则数值为 9 的表达式是( )。 (分数:2.00)A.*p+9B.*(p+8) C.*p+=9D.p+8解析:在 C+语言的数组
12、元素的引用方法,如数组元素 a0,可以用表达式*(p+0),即*p 来引用,对于数组元素 a1,可以用表达式*(P+1)来引用,在这里,p+1 的值就是数组元素 a1的地址,对此地址使用“间接访问运算符”:*(p+1)就代表存储单元 a1,注意:一对圆括号不可少。同样,对于数组元素a2,则可以用表达式*(p+2)来引用,对于数组元素 a9,可以用表达式*(P+9)来引用。因此,当指针变量 p 指向 a 数组的起始地址时,若 0i)按位与( else y=O; B.if(x) if(x0)y=1; else if(x0)y=-1;C.y=-1; if(x) if(x0)y=1; else if(
13、x=0)y=0; else y=-1;D.y=0; if(x=0) if(x0)y=1; else y=-1;解析:条件运算符要求有三个操作对象,它是 c+语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式 1?表达式 2:表达式 3,先求解表达式 1,若为非 0(真)则求解表达式 2,此时表达式 2 的值就作为整个条件表达式的值。若表达式 1 的值为 0(假),则求解表达式 3,表达式 3 的值就是整个条件表达式的值。本题中用了两次三目运算符。28.if 语句的语法格式可描述为 格式 1:if() 或 格式 2:if()else 关于上面的语法格式,下列表述中错误的是(分数:2.00
14、)A.部分可以是一个 if 语句,例如 if(if(a =0)?)B.部分可以是一个 if 语句,例如 if(?)if(?)C.如果在前加上逻辑非运算符!并交换和的位置,语句功能不变D.部分可以是一个循环语句,例如 if(?)while(?)?解析:29.若有语句 int * point,a=4;和 point= scanf(“%d%*d%d“, printf(“%d%d%d/n“,i,j,k); (分数:30.00)填空项 1:_ (正确答案:10300)解析:在 scanf 格式控制符中,如果在%后有一个“*”附加说明符,表示跳过它指定的列数。本题中“%d%*d%d“”表示将 10 赋给
15、i,%*d 表示读入整数但不赋给任何变量,然后再读入整数 30 赋给变量 j, 那么变量 k 并没有重新赋值,仍为初始值 0。所以输出的结果为 10300。39.如果要把返回值为 void 的函数 A 声明为类 B 的友元函数,则应在类 B 的定义中加入的语句是 1。(分数:30.00)填空项 1:_ (正确答案:friend void A-|_|-;)解析:C+中类的友元函数在声明时应在该函数前面加上关键字 friend,同样如果要声明一个类为另一个类的友元类也要在前面类名前加上 friend。 40.友元类的所有成员函数都是另一个类的 1。(分数:30.00)填空项 1:_ (正确答案:友
16、元函数)解析:C+语言中友元类中的函数都是另一个类的友元函数。41.在 MyClass 类的定义中,对赋值运算符“=“进行重载。请将画线处缺失的部分补充完整。 1 MyClass:operator=(const MyClass private: int n; ; int f( ) MyClass * ptr=new MyClass(45);2 (分数:30.00)填空项 1:_ (正确答案:ptr-SetNum(50);)解析:本题考查的是考生使用对象指针调用成员函数的能力,指针调用成员函数应该使用符号“-”。43.C+语言的基本控制结构为顺序结构、选择结构和 1。(分数:30.00)填空项
17、1:_ (正确答案:循环结构)解析:C+语言 3 种基本结构就是顺序结构,选择结构,循环结构。 44.请将如下程序补充完整,使得输出结果为:bbaa #include using namespace std; class A public: 1cout0) str2*i=stri; str2*i-1= *; i-; printf(“%s/n“,str); main2 char str40; scanf(“%s/n“,str); insert(str); (分数:30.00)填空项 1:_ (正确答案:a*b*c*d*)解析:此题主要考核的是函数与一个简单算法结合在一起的应用。首先定义一个 int 型变量来存放字符串 str 的长度,执行 while 条件语句,通过分析可知,字符串第 2*i 项的值可由第 i 项的值得到;第 2*i-1 项直 接赋值为*号,i 减 1,如此反复直到不满足 i0 的条件时,输出运行后的字符串。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1