1、计算机等级考试二级(C+)50 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(每小题 2分,共 70分) 下列各(总题数:35,分数:70.00)1.在 C+语言程序中,对象之间的相互通信通过( )。(分数:2.00)A.a=1;B.+i;C.a=a+1=5D.! (+a! =b-)2.下面关于运算符重载的描述错误的是( )。(分数:2.00)A.X(double k) i=k; B.X( ) i=6;C.X(double m,double n) i=m;j=n;D.double X(double k) i=k;return i;3.下列程序的输出结果是( )。 # inc
2、lude iostreamh int min( int a,int b) if(a b)return a; else return b; return 0 void main ( ) cout min(1,min(2,3) endl; (分数:2.00)A.15B.25C.35D.454.有如下程序 #include #include using namespace std; class MyClass public: MyClass()coutnext=q-next;B.p-next=p-next-next;C.p-next=r;D.p=q-next;22.下列运算符中哪些是不能够被重载的?
3、(分数:2.00)A.a =c =zB.(c =A) B.p-next=p-next-next;C.p-next=r;D.p=q-next; 解析:要想将 q 所指结点从链表中删除,同时保持链表的连续,必需使 p 结点的 next 指向 r,在四个选项 中,只有选项 D 不能做到。22.下列运算符中哪些是不能够被重载的?(分数:2.00)A.a =c =zB.(c =A) cout a “ “; void print ( ) const cout a “ “; ; void main ( ) example x (3); const example y (2); x. print ( );yp
4、rint ( ); (分数:2.00)A.2 2B.4 3C.4 2 D.3 2解析:“+”是右结合的,所以先赋值为 3,最后输出 3+1;常成员函数只有常对象才能调用,所以输出2。28.决定 C+语言中函数的返回值类型的是( )。(分数:2.00)A.Call ff(5,7,z)B.Call ff(x,y,z) C.Call ff(3+x,5+y,z)D.Call ff(x+y,x-y,z)解析:该程序首先定义一个二维数组 a(2,3),然后利用 DO WHILE-ENDDO嵌套循环将每个数组元素赋值,即将该数组元素的行下标和列下标之和赋值给对应元素。29.函数 fun的返回值是( )。 f
5、un(char*a,char*b) intnum=0,n=0; while(*(a+num)!=/0)num+; while(bn)*(a+num)=bn;num+;n+; returnnum; (分数:2.00)A.j=i;B.j=(long)i;C.i=(int)j;D.i=j; 解析:+,-运算符不能用于常量表达式。30.下面关于类和对象的描述中,错误的是( )。(分数:2.00)A.类就是 C语言中的结构体类型,对象就是 C语言中的结构体变量 B.类和对象之间的关系是抽象和具体的关系C.对象是类的实例,一个对象必须属于一个已知的类D.类是具有共同行为的若干对象的统一描述体解析:在 C+
6、语言中,类和结构体有本质区别,类中包含数据及操作函 数,而结构体只包含有数据。31.有以下程序: #include struct STU int num; float TotalScore; ; void f(struct STU p) struct STU s2=20044,550,20045,537; p.num=s1.num; p.TotalScore=s1.TotalScore; main() struct STU s2= 20041,703,20042,580; f(s0); printf(“%d %3.0f/n“,s0.num,s0.TotalScore); 程序运行后的输出结果是
7、_。 (分数:2.00)A.20045 537B.20044 550C.20042 580D.20041 703 解析:本题定义了结构体类型的变量 p 作为形参,并将结构体变量 s0中的值传递给了形参变量 p,在函数 f 中,又对 p 中的内容作了改变,但这种改变对主函数中 s0的值并不产生影响,所以主函数中输出 s0的 数据依然是在主函数中初始化时的数据。32.可以用 p.a的形式访问派生类对象 p的基类成员 a,其中 a是( )。(分数:2.00)A.纵栏式报表 B.表格式报表C.图表报表D.标签报表解析:如果在返回语句中加入了选项 TO MASTER,那么在执行程序嵌套时,它们的返回次序
8、将被改变。子程序 3中加入选项 TO MASTER,则它们的返回次序将是由子程序 2直接返回到主程序,并不是按子程序3,2,1 的次序再返回到主程序。33.C+语言对 C语言做了很多改进,C+语言相对于 C语言的最根本的变化是( )。(分数:2.00)A.增加了一些新的运算符B.允许函数重载,并允许设置缺省参数C.规定函数说明符必须用原型D.引进了类和对象的概念 解析:C+语言最重要的特点是其为一种面向对象的程序设计语言,但是 C+语 言也包含了全部的 c语言的特征。34.下列程序的执行结果为( )。 # include iostreamh void main ( ) int a=3,b=0;
9、 int * p=a; b= +a+; cout * p “,“ b endl; (分数:2.00)A.选项卡B.文本框控件C.列表框或组合框控件 D.选项组控件解析:在 Visual Basic中,定义变量的关键字为 Dim、Static、Redim、Public 或 Private,它们在使用上是不同的,Dim 用于标准模块、窗体模块或过程中定义变量或者数组;Static 用于过程中定义静态变量或数组;Public 用于在标准模块中定义全局变量或数组;Redim 主要用于定义数组。35.下列程序的运行结果为( )。 # include iostreamh int i=0; classA p
10、ublic: A( ) i + + ; ; void main( ) A a,b3,* c; C=b; cout i endl; (分数:2.00)A.该宏组由 macro1和 macro2两个宏组成B.宏 macor1由两个操作步骤(打开窗体、关闭窗体)组成C.宏 macro1中 OpenForm命令打开的是教师自然情况窗体D.宏 macro2中 Close命令关闭了教师自然情况和教师工资两个窗体 解析:表格式报表是以整齐的行列形式显示记录数据,通常一行显示一条记录、一页显示多行记录。二、填空题(每空 2分,共 30分)(总题数:15,分数:30.00)36.假定 A为一个类,则语句 A(A
11、 for(c1=0,c2=9;c1填空项 1:_ (正确答案:918273645)解析:本题程序的作用是通过 for 循环将 0-9 这 10 个数字从前向后,同时也从后向前依次输出。39.关系数据库管理系统能实现的专门关系运算包括选择、连接和 1。(分数:2.00)填空项 1:_ (正确答案:投影)解析:关系数据库管理系统的专门关系运算包括选择、连接和投影。选择运算是在指定的关系中选取所有满足给定条件的元组,构成一个新的关系,而这个新的关系是原关系的一个子集:投影运算是在给定关系的某些域上进行的运算。通过投影运算可以从一个关系中选择出所需要的属性成分,并且按要求排列成一个新的关系,而新关系的
12、各个属性值来自原关系中相应的属性值:连接运算是对两个关系进行的运算,其意义是从两个关系的笛卡尔积中选出满足给定属性间一定条件的那些元组。40.数据的逻辑结构在计算机存储空间中的存放形式称为数据的 1(分数:2.00)填空项 1:_ (正确答案:存储结构(或物理结构、或物理存储结构))解析:时间数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构。41.C+语言程序的注释可以出现在程序中的任何地方,一个注释以 1 作为开始和结束的标记。(分数:2.00)填空项 1:_ (正确答案:/ * * /)解析:C+语言程序的注释可以出现在程序中的任何地方,一个注释以“/ *,”开始, 以“* /
13、”为结束。42.以下程序的输出结果是 1。 #includeiostreamh voidfun( ) staticinta=0; a+=2; couta“; voidmain( ) intcc; for(cc=1;cc4;cc+) fun( ); coutendl; (分数:2.00)填空项 1:_ (正确答案:2 4 6)解析:本题考查静态局部变量的使用。用关键字 static声明的局部变量为“静态局部变量”,其值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。 43.在关系模型中,把数据看成是二维表,每一个二维表
14、称为一个 1。(分数:2.00)填空项 1:_ (正确答案:关系)解析:在 Visual FoxPro 中,一个“表”就是一个关系。一个关系的逻辑结构就是一张二维表。44.C+语句 const char * const p= “hello“;,所定义的指针 p和它所指的内容都不能被 1。(分数:2.00)填空项 1:_ (正确答案:改变)解析:本题考查的是定义常量的关键字 const,由 sonst定义的变量的值不可以再改变,所以定义时必须进行初始化。45.在 C+语言中每个类都有一个 1 指针,该指针指向正在调用成员函数的对象。(分数:2.00)填空项 1:_ (正确答案:this)解析:C
15、+语言中 this指针是类自带的一个指针,它指向正在调用成员函数的对象。46.已知字符 A的 ASCII码为 65,以下程序运行后的输出结果是 1。 main2 char a,b; a=A+5-3; b=a+6-2; printf(“%d %c/n“,a,b); (分数:2.00)填空项 1:_ (正确答案:67 G)解析:由于“5”和“3”的 ASCII 码相差为 2,所以变量 a 经过运算,得出其值为字符“C”,又因为输出 时其形式是“%d”,故输出的值是字符“C”的 ASCII 码,即 67;同理,变量 b 的值等于变量 a 的值加上 字符“6”与字符“2”的 ASCII 码的差值,即得
16、到字符“G”,输出时以“%c”的形式输出“G”。47.operator是运算符重载时必须使用的关键字,它和被重载的运算符连在一起,作为运算符函数的专用函数名,务必把该函数说明为 1 的。(分数:2.00)填空项 1:_ (正确答案:public)解析:本题考查 c+中运算符重载的固定格式和要求。C+中不论用成员函数还是友元函数重载运算符都必须用关键字 operator,都必须将函数声明为公有的。48.下列 for语句的循环次数为 1。 for(int a=0,b=1;b&a填空项 1:_ (正确答案:5)解析:因为 b的值为 1,所以 ba5 相当于 a49.按“行进后出”原则组织数据的数据结
17、构是 1 。(分数:2.00)解析:50.以下程序的输出结果是 1。 #includeiostreamh unsignedfun(unsignednum) unsignedk=1; do k * =num%10;num/=10;while(num); returnk; voidmain( ) unsignedn=26; coutfun(n)endl; (分数:2.00)填空项 1:_ (正确答案:12)解析:函数有一个形参 num,循环前变量 k置 1,循环中,表达式 num%10是取 num 的个位,将 num的个位值累乘于 k中,然后 num除以 10。循环直至 num为。结束,这是 逐一求出 num十进制表示的各位数字,并累乘于变量 k的循环。函数最后返回 k。函数 fun 的功能是求整数的各位十进数字积。