1、二级 C+笔试-374 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:30,分数:70.00)1.常用的关系运算是关系代数和( )。(分数:2.00)A.集合代数B.逻辑演算C.关系演算D.字段2.在 C+语言中,函数形参的默认存储类型是( )。(分数:2.00)A.autoB.registerC.staticD.extem3.为使下列程序的正确输出结果为:Now is 2004-7-6 12:12:12那么应该在程序划线处填入的语句是( )。#include iostreamusing namespace std;class TIME;class DATEpubl
2、ic:DATE(int y=2004,int m=1,int d=1)year=y;month=m;day=d;void DateTime(TIME private:int year,month, day;class TIMEpublic:TIME(int h=0,int m=0,int s=0)hour=h;minute=m;second=s;_; /将类 DATE 中成员函数 DateTime 声明为类 TIME 的友元函数private:int hour,minute, second;void DATE: :DateTime(TIME int main ( )DATE d(2004,7,
3、6);TIME t (12, 12, 12);d. DateTime (t);return 0;(分数:2.00)A.friend void DateTime(TIME B.friend void DATE:DateTime(TIME C.void DateTime(TIME D.friend void DateTime(TIME 4.定义如下枚举类型:enumMonday,Tuesday,Wednesday,Thursday,Friday=2;则下列语句正确的是( )。(分数:2.00)A.表达式 Wednesday=Friday的值是 trueB.Dayday;day=3;C.Dayday
4、;day=Monday+3;D.Dayday;day=Tuesday+10;5.以下选项中,合法的字符常量是( )。(分数:2.00)A.“N“B./010C.68D.D6.已知二叉树的前序序列为 ABDCEFG,中序序列为 DBCAFEG,则其后序序列为( )。(分数:2.00)A.DCBAFGEB.DCBFGEAC.DCBFEGAD.DCBGFEA7.一组记录的排序码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为( )。(分数:2.00)A.38,40,46,56,79,84B.40,38,46,79,56,84C.40,38,46,
5、56,79,84D.40,38,46,84,56,798.设有如下程序:#include iostreamusing namespace std;class Apublic:int i;display()cout“class A/n“;class Bpublic:int i;display()cout“class B/n“;class C : public A, public Bint j;public:int i;show ( )j = i * i;display();int main()C demo;demo.show();return O;则主程序运行时将( )。(分数:2.00)A.因
6、为变量 i的重复定义而报错B.因为对象 demo间接调用 display()函数时产生二义性而报错C.因为类定义的语法错误而不能运行D.没有语法错误,能够正常输出结果9.在一个长度为 n的线性表中删除一个元素,最坏情况下需要移动的数据元素数目为 ( )。(分数:2.00)A.1B.n-1C.n+1D.n210.规范化理论中消除其中多余的数据相关性是靠分解( )。(分数:2.00)A.关系运算B.内模式C.外模式D.视图11.有如下程序:#includeiostreamusing namespace std;class basepublic:virtual void f1()cout“F1Bas
7、e“;virtual void f2()cout“F2Base “;class derive : public basevoid f1 ( )cout“F1Derive“;void f2( int x )cout“F2 Derive“;int main ()base objl, * p;derive obj2;p = p - f1();p - f2();return 0;执行后的输出结果是( )。(分数:2.00)A.F1Derive F2BaseB.F1Derive F2DeriveC.F1Base F2BaseD.F1Base F2Derive12.下列关于多继承二义性的描述中,错误的是(
8、 )。(分数:2.00)A.一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性。B.解决二义性的最常用的方法是对成员名的限定法C.基类和派生类中同时出现的同名函数,也存在二义性问题D.一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,可能出现二义性13.下面不属于软件设计原则的是( )。(分数:2.00)A.抽象B.模块化C.自底向上D.信息隐蔽14.在一个单链表 HL中,若要向表头插入一个由指针 p指向的节点,则需要执行语句序列( )。(分数:2.00)A.HL=p;p-next=HL;B.p-next=HL;HL=p;C
9、.p-next=HL;p=HL;D.p-next=HL-next;HL-next=p15.源程序中应包含一些内部文档,以帮助阅读和理解源程序,源程序的内部文档通常包括选择合适的标识符、注解和( )。(分数:2.00)A.程序的视觉组织B.尽量不用或少用 GOTO语句C.检查输入数据的有效性D.设计良好的输出报表16.下列关于 goto语句的描述中,正确的是( )。(分数:2.00)A.goto语句可在一个文件中随意转向B.goto语句后面要跟一个它所转向的语句C.goto语句可以同时转向多条语句D.goto语句可以从一个循环体内转到循环体外17.下列关于 getline() 函数的描述中,不正
10、确的是( )。(分数:2.00)A.getline()函数是用来从键盘上读取字符串的B.getline()函数读取字符串长度是受限制的C.getline()函数读取字符串时,遇到终止符时就停止D.getline()函数中所使用的终止符只能是换行符18.下列关于严格控制 goto语句使用的理解中,错误的是( )。(分数:2.00)A.用一个非结构化的程序设计语言实现一个结构化的构造B.若不使用 goto语句会使功能模糊C.在某种可以改善而不是损害程序可读性的情况下D.goto语句可以完全不用19.有以下程序:#include iostreamusing namespace std;char *x
11、=“First“, “Second“, “Third“ ;void f(char *z )cout*z+end1;int main ( )char *y;y=x;f(y);return 0;(分数:2.00)A.产生语法错误B.FirstC.SecpndD.Third20.下面类的定义,有( )处错误。class MyClasspublic:void MyClass();MyClass(int Value);private:int i=0;(分数:2.00)A.1B.2C.3D.421.下列叙述中,正确的是( )。(分数:3.00)A.入栈运算只需将新元素插到栈顶指针指向的位置B.出栈运算只需
12、将栈顶元素赋给一个指定变量C.出栈运算与读栈顶元素是相同的操作D.读栈顶元素不删除栈顶元素22.要把高级语言编写的源程序转换为目标程序,需要使用( )。(分数:3.00)A.编辑程序B.驱动程序C.调试程序D.编译程序23.以下程序的功能是:按顺序读入 10名学生 4门课程的成绩,计算出每个学生的平均分数并输出,程序如下:#includeiostreamusing namespace std;int main( )int n,k;float score,sum,ave;sum = 0.0;for(n = 1;n =10; n+)for(k =1;k=4;k+)cinscore;sum += s
13、core;ave=sum/4.0;cout“NO“n“ave:“aveend1;return 0;上述程序运行后结果不正确,调式中发现有一条语句出现在程序中的位置不正确。这条语句是非曲直( )。(分数:3.00)A.sum=0.0;B.sum+=score;C.ave= sum/4.0D.cout“NO.“n“ave:“aveend1;24.有如下程序:#include iostream.hclass xprotected:int a;public:x()a=1;class x1 : virtual public xpublic:x1()a+=1;couta;class x2 : virtua
14、l public xpublic:x2()a+=2;couta;class y : public xl,public x2public:y()coutaend1;int main()y obj;return O;该程序运行后的输出结果是( )。(分数:3.00)A.1B.123C.242D.24425.下列 for循环执行的次数为( )。for(int i=0,j=10;i=j=10;i+,j-)(分数:3.00)A.0B.11C.10D.无数次26.有以下程序:#include iostreamusing namespace std;class MyClassint m;publ i c:s
15、tatic int n;MyClass ( )m = 0;void setvalue()m+;n+;void output ()cout“m=“m , n=“nend1;int MyClass : n=0;int main()MyClass obj1, obj2;obj1.setvalue();objl.output();obj2.setvalue();obj2.output();return 0;(分数:3.00)A.m= 1 ,n= 1 换行m= 1 ,n=1B.m= 1 ,n= 1 换行m=1 ,n=2C.m=1,n=1换行m=2,n=1D.m=1,n=1换行m=2,n=227.若有定义
16、:int*p;则下列各选项中,不同于表达式“*p=*p+1;”的是( )。(分数:3.00)A.*p+;B.+*p;C.*p+=1;D.+(*p);28.下列数组的定义中,会产生错误的是( )。(分数:3.00)A.int a=0,1,2,3,4,5,6;B.int a10=0,1,2,3,4,5,6;C.char a5=“hello“;D.char a5=h,e,1,1,o;29.有以下程序:#include iostreamusing namespace std;class Pointpublic:void SetPoint(int x,int y);void Move(int xOff,
17、int yOff);int GetX()return X;int GetY()return Y;private:int X,Y;void Point:SetPoint(int x, int y)X=x;Y=y;void Point: :Move(int xOff, int yOff)X+=xOff;Y+=yOff;int main ()Point p1;p1.SetPoint(1,2);p1.Move (5, 6);cout“Point1 is (“p1.GetX(),p1.GetY()“)“end1;return 0;执行后的输出结果是( )。(分数:3.00)A.Point1 is (6,
18、8)B.Point1 is (1,2)C.Point1 is (5,6)D.Point1 is (4,4)30.以下程序的输出结果是 ( )。#include iostreamusing namespace std;int f(int b,int m, int n)int i,s = O;for(i = m;in;i+=2)s+=b i;return s;int main ( )int x a = 1,2,3,4,5,6,7,8,9;x = f(a,3,7);coutxend1;return 0;(分数:3.00)A.10B.18C.8D.15二、填空题(总题数:14,分数:30.00)31.
19、对待排序文件的初始状态作要求的排序方法是 【1】 。(分数:2.00)填空项 1:_32.Jackson方法是一种面向 【2】 的结构化方法。(分数:2.00)填空项 1:_33.软件工程的 3个要素是工具、过程和 【3】 。(分数:2.00)填空项 1:_34.数据的物理独立性是指当数据的 【4】 改变时,通过系统内部的自动映象或转换功能,保持了数据的逻辑结构不变。(分数:2.00)填空项 1:_35.软件测试的常用方法通常可分为白盒测试和 【5】 。前者是根据程序的内部逻辑来设计测试用例,后者是根据软件的规格说明来设计测试用例。(分数:2.00)填空项 1:_36.假定输入的 10个整数为
20、:32,64,53,87,54,32,98,56,98,83。那么下列程序的运行结果是 【6】 。#include iostreamusing namespace std;int main()int a,b,C,X;a = b = C = 0;for(int i = 0;i10;i+)cinx;switch(x%3)case 0 :a+=x; break;case 1 :b+=x; break;case 2 : C+=x; break;couta“,“b“,“Cend1;return 0;(分数:2.00)填空项 1:_37.以下程序中的 select()函数功能是:在 N行 M列的二维数组中
21、选出一个最大值作为函数值返回,并通过形参传回此最大值的行下标。请填空完成此程序。#includeiostream#define N 3#define M 3using namespace std;int select(int aNM,int *n)int i,j,row=0,colum=0;for(i=0;iN;i+)for(i=0;jM;j+)if(aijarowcolum)row=i;colum=j;*n= 【7】 ;return 【8】 ;int main()int aNM=9,11,23,6,1,15,9,17,20;int max,n;max=select(a,templatecla
22、ss Tvoid f( 【12】 )T t;for (int i=0;in/2;i+)t=a Ii;a i=an-1-i;a n-1-i=t;int main ( )int x=6,7,8,9;f(x,4);for (int i=0;i4;i+)coutxi;coutend1;return 0;(分数:2.00)填空项 1:_42.有以下程序:#include iostreamusing namespace std;class Apublic:virtual void show()cout“A“;class B : public Apublic:void show()cout “B“;void
23、 display( A * obj )obj- show();int main ( )A demol;B demo2;display( display( return 0;执行后的输出结果为 【13】 。(分数:2.00)填空项 1:_43.如下程序执行后的输出结果是 【14】 。#include iostreamusing namespace std;class Basepublic:Base(int x,int y)a=x;b=y;void Show()cout“Base: “a , b“ “;private:int a,b;class Derived : public Basepubli
24、c:Derived(int x, int y, int z) : Base(x,y),c(z) void Show()cout“Derived:“cend1;private:int c;int main()Base b(100,100),*pb;Derived d(10,20,30);pb=pb-Show();pb=pb-Show();return 0;(分数:2.00)填空项 1:_44.以下程序设计功能是:将结构体变量 time 中的内容写到文件中。#include iostreamusing namespace std;struct dateint year;int month;int
25、day;int main ( )date time = 2005, 1, 1 ;ofstream outdate;outdate.open( “d:/date.txt“, ios : binary );outdate.write(_, sizeof( tt ) );outdate.close();return 0;则程序中空白处应该填入的语句为 【15】 。(分数:2.00)填空项 1:_二级 C+笔试-374 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:30,分数:70.00)1.常用的关系运算是关系代数和( )。(分数:2.00)A.集合代数B.逻辑演算C.关系
26、演算 D.字段解析:解析 本题考核关系代数运算。关系运算包括关系代数和关系演算。2.在 C+语言中,函数形参的默认存储类型是( )。(分数:2.00)A.auto B.registerC.staticD.extem解析:解析 在函数内部或复合语句内定义变量时,如果没有指定的存储类型或使用了 auto说明符,系统就认为所定义的变量具有自动类别。3.为使下列程序的正确输出结果为:Now is 2004-7-6 12:12:12那么应该在程序划线处填入的语句是( )。#include iostreamusing namespace std;class TIME;class DATEpublic:DA
27、TE(int y=2004,int m=1,int d=1)year=y;month=m;day=d;void DateTime(TIME private:int year,month, day;class TIMEpublic:TIME(int h=0,int m=0,int s=0)hour=h;minute=m;second=s;_; /将类 DATE 中成员函数 DateTime 声明为类 TIME 的友元函数private:int hour,minute, second;void DATE: :DateTime(TIME int main ( )DATE d(2004,7,6);TI
28、ME t (12, 12, 12);d. DateTime (t);return 0;(分数:2.00)A.friend void DateTime(TIME B.friend void DATE:DateTime(TIME C.void DateTime(TIME D.friend void DateTime(TIME 解析:解析 根据要求可知,在横线处是将类 DATE中成员函数 DateTime声明为类 TIME 的友元函数。由于函数 DateTime是类 DATE的成员函数,因此对 DateTime函数的使用要加上“DATE:”修饰。其他各声明的组成部分可参照函数 DateTime在类体
29、外的定义实现。4.定义如下枚举类型:enumMonday,Tuesday,Wednesday,Thursday,Friday=2;则下列语句正确的是( )。(分数:2.00)A.表达式 Wednesday=Friday的值是 true B.Dayday;day=3;C.Dayday;day=Monday+3;D.Dayday;day=Tuesday+10;解析:解析 本题考查枚举类型的定义和使用。枚举类型定义了一些整型符号常量的集合,使用枚举类型时应该注意以下几点;枚举类型的第一个常量默认值是 0。枚举类型常量的值允许彼此相同。虽然枚举类型常量是整数类型,但是不允许使用整数直接赋值给枚举类型变
30、量,也不允许与整数进行运算,只可以与整数进行比较。根据以上知识,我仃何以得出选项 B、C、D 都不正确。5.以下选项中,合法的字符常量是( )。(分数:2.00)A.“N“B./010 C.68D.D解析:解析 本题考核字符型常量的表示。选项 A中是字符串的表示方法。选项 B所表示的是一个转义字符,是特殊的字符常量。选项 C中所表示的是整型常量。选项 D 中不是常量的表示。6.已知二叉树的前序序列为 ABDCEFG,中序序列为 DBCAFEG,则其后序序列为( )。(分数:2.00)A.DCBAFGEB.DCBFGEA C.DCBFEGAD.DCBGFEA解析:解析 本题先可用排除法,由二叉树
31、的前序序列为 ABDCEFG可知:二叉树的根节点为 A,因此选项 A错误。通过分析可知,B、E 是 A的左右子节点,D、C 是 B 的左右子节点,F、G 是 E的左右子节点。7.一组记录的排序码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为( )。(分数:2.00)A.38,40,46,56,79,84B.40,38,46,79,56,84 C.40,38,46,56,79,84D.40,38,46,84,56,79解析:解析 快速排序的思想是:从线性表中选取一元素,如本题中的 46,将线性表后面小于 46的元素移到前边,而前面大于 46
32、的元素移到后边。本题中 46是第一个元素,因此只需将线性表后面小于 46的元素移到前边。8.设有如下程序:#include iostreamusing namespace std;class Apublic:int i;display()cout“class A/n“;class Bpublic:int i;display()cout“class B/n“;class C : public A, public Bint j;public:int i;show ( )j = i * i;display();int main()C demo;demo.show();return O;则主程序运行时
33、将( )。(分数:2.00)A.因为变量 i的重复定义而报错B.因为对象 demo间接调用 display()函数时产生二义性而报错 C.因为类定义的语法错误而不能运行D.没有语法错误,能够正常输出结果解析:解析 本题主要考察 C+中多继承的工作方式和二义性的解决办法。在 C+中,允许一个派生类从多个基类派生,这种继承方式称为多继承。多继承的定义格式如下:class派生类名:继承方式基类名 1,继承方式 2基类名 2,派生类类体;但是,如果一个派生类的两个或多个基类中有某个同名成员,在派生类中对这个成员的访问就可能出现二义性;同时,如果一个派生类是由两个或多个基类派生出来的,而这几个基类又有一
34、个共同的基类,对该基类进行访问时,也可能会出现二义性。本题程序中,类 C是由类 A和类 B多继承得到的派生类,但其自身函数 show()中调用了 display()函数,而这个函数是同时出现在类 C的两个基类中的,因此程序会出现二义性,编译器将无法确定调用哪一个 display()函数来执行操作,因此报错。解决二义性的通常办法是通过作用域运算符“:”进行限定。9.在一个长度为 n的线性表中删除一个元素,最坏情况下需要移动的数据元素数目为 ( )。(分数:2.00)A.1B.n-1 C.n+1D.n2解析:解析 在一般情况下,要删除第 i个元素时,首先是从第 i+1个元素开始,直到第 n个元素之
35、间共 n-i个元素依次向前移动一个位置,删除结束后,线性表的长度减 1。最坏情况指的是删除线性表的第一个元素,则需要移动表中第 1个元素以外所有的元素,答案为 B。10.规范化理论中消除其中多余的数据相关性是靠分解( )。(分数:2.00)A.关系运算 B.内模式C.外模式D.视图解析:解析 本题考核数据库规范化理论。数据库规范化的基本思想是逐步消除数据依赖中不合适的部分,根本思想是通过分解关系运算来消除多余的数据相关性。11.有如下程序:#includeiostreamusing namespace std;class basepublic:virtual void f1()cout“F1B
36、ase“;virtual void f2()cout“F2Base “;class derive : public basevoid f1 ( )cout“F1Derive“;void f2( int x )cout“F2 Derive“;int main ()base objl, * p;derive obj2;p = p - f1();p - f2();return 0;执行后的输出结果是( )。(分数:2.00)A.F1Derive F2Base B.F1Derive F2DeriveC.F1Base F2BaseD.F1Base F2Derive解析:解析 本题主要考察 C+中虚函数机
37、制及其继承过程中的要点。虚函数在基类中加关键词 virtual声明,在派生类中重新定义。如果派生类没有覆盖虚函数,则程序执行中将会执行基类的虚函数版本。本题程序中,建立了基类 base,其内函数 void f1()和 void f2()均被声明为虚函数,并在调用时会显式地发出声明。派生类 derive利用 public方式继承基类 base,并覆盖其基类 base中的虚函数 f1()。对于base中的虚函数 f2(),由于派生类 derive中的同名函数 f2()中带有参数 int x,因此被编译器认为是函数重载,而不作虚函数覆盖处理,所以实际上派生类 derive中包含两个 f2()函数,一
38、个不带参数,调用时执行基类 base中的 f2()函数版本,一个带参数 int x,调用时执行重载后的版本。本题主函数中,定义了基类对象。obj1 和基类指针*p,同时定义了派生类对象。obj2。p指向 obj2时,“p-n()”函数调用执行派生类覆盖后的版本,输出 F1Derive;“p- f2()”由于不带参数,因此执行未经派生类覆盖的函数版本,即基类 base中的 f1()函数版本。12.下列关于多继承二义性的描述中,错误的是( )。(分数:2.00)A.一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性。B.解决二义性的最常用的方法是对成员名的限定法C.基
39、类和派生类中同时出现的同名函数,也存在二义性问题 D.一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,可能出现二义性解析:解析 本题考核多继承中出现的二义性问题。在多重继承的情况下,派生类具有两个以上的直接基类,而这些直接基类的一部分或全部又是从另一个共同基类派生而来时,这些直接基类中从上一级继承来的成员就拥有相同的名称。在派生类的对象中,这些同名成员在内存中同时有多个复制件,所以派生对这些同名成员的访问存在二义性。所以选项 A和 D的说法是正确的。解决二义性的方法有两种:一是使用作用域分辨符来惟一标识并分别访问它们:二是可以将共同基类设置为虚基类。而
40、第一种方法最常用。所以选项 B的说法是正确的。基类和派生类中同时出现同名函数,符合支配规则,不存在二义性问题。所以选项 C 的说法不正确。13.下面不属于软件设计原则的是( )。(分数:2.00)A.抽象B.模块化C.自底向上 D.信息隐蔽解析:解析 在软件开发过程中,必须遵循软件工程的基本原则。这些原则使用于所有软件项目。这些基本原则包括:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性、可验证性。选项 C是错误的,它是一种软件开发的方法,而不属于软件工程的基本原则。14.在一个单链表 HL中,若要向表头插入一个由指针 p指向的节点,则需要执行语句序列( )。(分数:2.00)A.HL
41、=p;p-next=HL;B.p-next=HL;HL=p; C.p-next=HL;p=HL;D.p-next=HL-next;HL-next=p解析:解析 HL 为链表的头指针。HL 指示链表中第一个节点的存储位置,在表头插入一个由指针 p指向的节点后,头指针指向 p,p 的指针域指向原链表中第一个节点15.源程序中应包含一些内部文档,以帮助阅读和理解源程序,源程序的内部文档通常包括选择合适的标识符、注解和( )。(分数:2.00)A.程序的视觉组织 B.尽量不用或少用 GOTO语句C.检查输入数据的有效性D.设计良好的输出报表解析:解析 源程序文档化主要包括 3个方面的内容:标识符的命名
42、、程序中添加注释以及程序的视觉组织。16.下列关于 goto语句的描述中,正确的是( )。(分数:2.00)A.goto语句可在一个文件中随意转向B.goto语句后面要跟一个它所转向的语句C.goto语句可以同时转向多条语句D.goto语句可以从一个循环体内转到循环体外 解析:解析 goto 语句也可以跳出循环和 switch语句,goto 语句无条件地转移程序的执行控制。它总是与一标号相匹配,其形式为:goto 标号;,标号是用户自定义的标识符,它可以处于 goto语句的前面,也可以处于其后,但标号必须与 goto语句处于同一个函数中。定义标号时,由一个标识符后面跟一个冒号组成。17.下列关
43、于 getline() 函数的描述中,不正确的是( )。(分数:2.00)A.getline()函数是用来从键盘上读取字符串的B.getline()函数读取字符串长度是受限制的C.getline()函数读取字符串时,遇到终止符时就停止D.getline()函数中所使用的终止符只能是换行符 解析:解析 本题主要考察 C+中输入流成员函数的使用。输入流的成员函数主要包括 open()、get()、getline()、read()、seekg()、tellg()和 close()等函数。其中,getline()函数从输入流中读取多个字符,并且允许指定输入终止符,其原形为:getline(char*l
44、ine,int size,char=/n)。其中:函数的第 1个参数是字符数组,用于放置读取的文本:第 2个参数是本次读取的最大字符个数,通过改变该参数可以设置读入的最大字节数即字符串长度:第 3 个参数是分隔字符,作为读取一行结束的标志,默认为换行符/n,通过改变该参数,可以自定义输入形式和结束标志。因此可以判断,题目选项 D的叙述是错误的,可以通过改变参数修改 getline()函数中所使用的终止符。18.下列关于严格控制 goto语句使用的理解中,错误的是( )。(分数:2.00)A.用一个非结构化的程序设计语言实现一个结构化的构造B.若不使用 goto语句会使功能模糊C.在某种可以改善
45、而不是损害程序可读性的情况下D.goto语句可以完全不用 解析:解析 goto 语句会造成程序的混乱,但在某些地方 goto语句还是需要的,若不使用 goto语句会使功能模糊。19.有以下程序:#include iostreamusing namespace std;char *x=“First“, “Second“, “Third“ ;void f(char *z )cout*z+end1;int main ( )char *y;y=x;f(y);return 0;(分数:2.00)A.产生语法错误B.First C.SecpndD.Third解析:解析 程序首先定义全局指针数组 x,并赋初
46、值。在函数 f()中,语句“cout*z+end1;”是输出*z 指向的字符串,然后指向下一个指针。由于在主函数中,指针 y已初始化指向指针数组 x,所以执行 f(y)后,程序输出指针数组 x中的第一个字符串“First“。20.下面类的定义,有( )处错误。class MyClasspublic:void MyClass();MyClass(int Value);private:int i=0;(分数:2.00)A.1B.2C.3 D.4解析:解析 该类的定义共有 3处错误。类的成员变量不能在定义时进行初始化:类的构造函数不能有返回值(包括 void类型);类的析构函数不能有参数。21.下列
47、叙述中,正确的是( )。(分数:3.00)A.入栈运算只需将新元素插到栈顶指针指向的位置B.出栈运算只需将栈顶元素赋给一个指定变量C.出栈运算与读栈顶元素是相同的操作D.读栈顶元素不删除栈顶元素 解析:解析 入栈运算需先将栈顶指针加 1,然后将新元素插到栈顶指针指向的位置,选项 A是错误的。出栈运算需将栈顶元素赋给一个指定变量,然后将栈顶指针减 1,选项 B是错误的。出栈运算与读栈顶元素不同之处在于读栈顶元素不删除栈顶元素。答案是选项 D。22.要把高级语言编写的源程序转换为目标程序,需要使用( )。(分数:3.00)A.编辑程序B.驱动程序C.调试程序D.编译程序 解析:解析 C+是以编译方式实现的高级语言。C+程序的实现必须要使用某种 C+语言的编译器进行编译。编译器的功能是将程序的源代码(.cpp)转换为机器代码的形式,称为目标代码(.obj);然后,再使用目标代码进行链接,生成可执行文件 (.exe),等待下一步的执行过程。23.以下程序的功能是:按顺序读入 10名学生 4门课程的成绩,计算出每个学生的平均分数并输出,程序如下:#includeiostreamusing namespace std;int main( )int n,k;floa