1、二级 C+笔试-268 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:30,分数:70.00)1.下列描述中,表达错误的是( )。(分数:2.00)A.公有继承时基类中的 public成员在派生类中仍是 public的B.公有继承时基类中的 private成员在派生类中仍是 private的C.公有继承时基类中的 protected成员在派生类中仍是 protected的D.私有继承时基类中的 public成员在派生类中是 private的2.下列关于虚函数的说法中,正确的是( )。(分数:2.00)A.如果在重定义虚函数时使用了保留字 virtual,则该重定义函
2、数仍然是虚函数B.虚函数不得声明为静态函数C.虚函数不得声明为另一个类的私有函数D.派生类必须重新定义基类的虚函数3.有以下程序:#include iostreamusing namespace std;class sampleprivate:int x;public:void setx(int i)x=i;int putx ()return x;int main ( )sample *p;sample A3;A0 .setx(5);A1 .setx (6);A2 .setx(7);for (int j=0;j3;j+)p=coutp-putx () “, “;coutend1;return
3、0;执行后执行结果是( )。(分数:2.00)A.5,6,7,B.5,5,5,C.6,6,6,D.7,7,7,4.VisualFoxPro是一种( )。(分数:2.00)A.数据库管理系统软件B.操作系统软件C.文字处理软件D.CAD软件5.下列关于指针运算的描述中,错误的是( )。(分数:2.00)A.在一定条件下,两个指针可以相加B.在一定条件下,两个指针可以进行逻辑判断C.在一定条件下,指针可以为空值D.在一定条件下,两个指针可以相互赋值6.下面这个程序段的时间复杂度是( )。for (i=1; in; i+)y=y+1;for (j=0;j=(2*n);j+)X+;(分数:2.00)A
4、.O(10g2n)B.O(n)C.0(nlog2n)D.O(n2)7.下面是“二维向量” vector2D 的定义,其中作为成员函数重载的运算符“+”的功能是将两向量的分量 x和 y对应相加,然后返回作为相加结果的新对象。那么应该在横线上填入的语句是( )。class vector2Dprivate:double x; /x分量double y; /y分量public:vector2D(double x0=0,double y0=0) :x(x0),y(y0) void show(cout (, y) ;_;vector2D : operator + (vector2D(分数:2.00)A.B
5、.vector2D operator + (vector2D int main()char *p=“abcdefgh“,*r;long *q;q=(long *)p;q+;r=(char *)q;coutrend1;return 0;上述程序的输出结果是( )。(分数:2.00)A.abcdefghB.0C.abcdD.efgh10.下列变量定义中,合法的是( )。(分数:2.00)A.short_a=1-1e-1;B.doubleb=1+5e2.5;C.long do=0xfdaL;D.float2_and=1-e-3;11.以下方法不属于结构化分析方法的是( )。(分数:2.00)A.面向
6、数据流的结构化分析方法B.面向数据结构的 Jackson方法C.面向数据结构的结构化数据系统开发方法D.面向对象的分析方法12.下列叙述中,不正确的是( )。(分数:2.00)A.在一个函数中,可以有多条 return语句B.函数的定义不能嵌套,但函数的调用可以嵌套C.函数必须有返回值D.不同的函数中可以使用相同名字的变量13.下列关于对象概念的描述中,错误的是( )。(分数:2.00)A.C+中的对象就是 C语言中的结构变量B.对象代表着正在创建的系统中的一个实体C.对象是一个状态和操作(或方法)的封装体D.对象之间的信息传递是通过消息进行的14.若有以下程序:#include iostre
7、amusing namespace std;class Baseprivate:int a,b;public:Base(int x, int y)a=x;b=y;void disp ()couta“ “bend1;class Derived : public Baseprivate:int c;int d;public:Derived(int x,int y, int z,int m) :Base(x,y)c=z;d=m;void disp ()coutc“ “dend1;int main()Base b(5,5),*pb;Derived obj(1,2,3,4);pb=pb-disp();r
8、eturn 0;执行程序后的输出结果是( )。(分数:2.00)A.1,2B.3,4C.2,3D.5,515.在一个长度为 n的线性表中插入一个元素,最好情况下需要移动的数据元素数目(分数:2.00)A.0B.1C.nD.n/216.在一个容量为 10的循环队列中,若头指针为 6,尾指针为 1,则此时该循环队列中共有的元素个数为( )。(分数:2.00)A.4B.5C.6D.717.需求分析阶段最后提供的文档是软件的( )。(分数:2.00)A.功能说明书B.加工说明书C.可行性分析报告D.需求规格说明书18.有以下程序:#include iostreamusing namespace std
9、;class Rpublic:R(int f1,int r2)R1=r1;R2=r2;void print();void print ()const;private:int R1, R2;void R: :print()coutR1“, “R2end1;void R: :print() constcoutRl“, “R2end1;int main ()R a(5,4);const R b(20,52);b.print ();return 0;执行后的输出结果是(分数:2.00)A.5,4B.20,52C.0,0D.4,519.有以下程序:#include iostream#include st
10、ringusing namespace std;class Y;class Xprivate:int x;char *strx;public:X(int a, char *str)x=a;strx=new charstrlen(str)+1;strcpy(strx,str);void show(Y ;class Yprivate:int y;char *stry;public:Y(int b,char *str)y=b;stry=new charstrlen(str)+1;strcpy(stry, str);friend void X: :show(Y ;void X: :show(Y cou
11、tob, stryend1;int main ( )X a(10,“X“);Y b (20, “Y“);a. show(B) ;return 0;执行后的输出结果是( )。(分数:2.00)A.X,YB.a,bC.X,XD.Y,Y20.有以下程序:#include iostreamusing namespace std;int main()int intone;int intone=5;rInt=7;coutintOne“,“rIntend1;return 0;上述程序执行后的输出结果是( )。(分数:2.00)A.5,7B.7,5C.5,5D.7,721.若有以下程序:#include io
12、streamusing namespace std;int main()int a4 4 = 1,2,3,-4,0,-12,-13,14,-21,23,0,-24,-31,32,-33,0;int i,j,s = 0;for(i=0;i4;i+)for(j=O;j4;j+)if(ai j =0)continue;s+=a i j;coutsend1;return 0;执行后的输出结果是( )。(分数:3.00)A.-138B.141C.75D.-122.以下过程设计工具不属于图形工具的是( )。(分数:3.00)A.程序流程图B.PADC.HIPOD.PDL23.若有以下程序:#include
13、 iostreamusing namespace std;#define PI 3.14class Pointprivate:int x,y;public:Point(int a,int b) x=a;y=b;int getx()return x;int gety()return y;class Circle : public Pointprivate:int r;public:Circle(int a, int b,int c) :Point(a,b) r=c;int getr()return r;double area()return PI*r*r;int main()Circle c1(
14、5,7,10);coutc1.area()end1;return 0;程序执行后的输出结果是( )。(分数:3.00)A.314B.157C.78.5D.153.8624.下列关于静态数据成员的描述中,正确的是( )。(分数:3.00)A.静态数据成员是类的所有对象共享的数据B.类的每个对象都有自己的静态数据成员C.类的不同对象有不同的静态数据成员值D.静态数据成员不能通过类的对象调用25.有以下程序:#include iostreamusing namespace std;void fun(int i,int j)cout(i+j)end1;void fun(int i)couti+end1
15、;int main()int a=1;fun((分数:3.00)A.;return 0;该程序执行后的输出结果是( )。A) 1B.2C.3D.426.在关系数据库中,用来表示实体之间联系的是( )。(分数:3.00)A.树结构B.网结构C.线形表D.二维表27.下列关于 C+运算符结合性的说法中,正确的是( )。(分数:3.00)A.赋值运算符是左结合的B.复合运算符是左结合的C.单目运算符是左结合的D.双目算术运算符是左结合的28.下列关于构造函数的描述中,错误的是( )。(分数:3.00)A.构造函数可以设置默认参数B.构造函数在定义类对象时自动执行C.构造函数可以是内联函数D.构造函数
16、不可以重载29.有以下程序#inclube iostream.hclass ClassOnepublic:ClassOne(int v=O) i=v;couti;void print() coutiend1;class ClassTwopublic:ClassTwo(int v=O) i=v;couti;void print() coutiend1;private:ClassOne myObj;int i;void main()ClassTwo obj(1);obj.print();(分数:3.00)A.011B.111C.110D.10130.t为 int类型,进入下面的循环之前,t 的值为
17、 0。while(t=1)则以下叙述中,正确的是( )。(分数:3.00)A.循环控制表达式的值为 0B.循环控制表达式的值为 1C.循环控制表达式不合法D.以上说法都不对二、填空题(总题数:14,分数:30.00)31.设有二维数组 A09,019,其每个元素占两个字节,第一个元素的存储地址为 100,若按行优先顺序存储,则元素 A6,6的存储地址为, 【1】 。(分数:2.00)填空项 1:_32.软件工程概念的出现源自 【2】 。(分数:2.00)填空项 1:_33.数据流图的类型有 【3】 和事务型。(分数:2.00)填空项 1:_34.一个学生关系模式为(学号,姓名,班级号,),其中
18、学号为关键词:一个班级关系模式为(班级号,专业,教室,),其中班级号为关键词:则学生关系模式中的外关键词为 【4】 。(分数:2.00)填空项 1:_35.从工程管理的角度来看,软件设计分两步来完成。首先是概要设计,然后是 【5】 。(分数:2.00)填空项 1:_36.函数 YangHui的功能是把杨辉三角形的数据赋给二位数组的下半三角,形式如下:(分数:4.00)填空项 1:_37.阅读下面程序:#includeiostreamusing namespace std;long fib(int n)if ( n 2 )return (fib(n-1)+fib(n-2);elsereturn
19、2;int main()coutfib(3)end1;return 0;则该程序的输出结果应该是 【8】 。(分数:2.00)填空项 1:_38.以下程序的输出结果是 【9】 。#includeiostreamusing namespace std;void fun()static int a=0;a+=2;couta;int main()int cc;for(cc=1;cc4;cc+)fun();coutend1;return 0;(分数:2.00)填空项 1:_39.C+中,设置虚基类的目的是 【10】 。(分数:2.00)填空项 1:_40.C+语言中,派生类继承了基类的全部数据成员和除
20、 【11】 之外的全部函数成员。(分数:2.00)填空项 1:_41.虚函数必须是类的 【12】 。(分数:2.00)填空项 1:_42.有如下程序:#include iostreamusing namespace std;template typename TT total( T *data) T s=0;while (*data) s+=*data+;return s;int main ()int x=2,4,6, 8,0, 12, 14,16, 18 ;couttotal (x);return 0;执行上面程序的输出结果是 【13】 。(分数:2.00)填空项 1:_43.有以下程序:#
21、include iostreamusing namespace std;class sampleint x;public:void setx(int i)x=i;int putx ()return x;int main ( )sample *p;sample A3;A0 .set:(5);A1 .setx(6);A2 .setx(7);for (int j=0;j3;j+)p=coutp-putx () “, “;coutend1;return 0;执行后的输出结果是 【14】 。(分数:2.00)填空项 1:_44.下面程序的预设功能是:统计文件 abc.txt中的字符个数。#include
22、 iostream.h#include fstream.h#include stdlib.hvoid main()fstream file;file.open( “abc.txt“, ios:in);if ( !file )cout“Can not open abc.txt“end1;abort();char ch;int i = O;while (_)file.get(ch);i+;cout“Characters : “iend1;file.close();则程序中空白处应该填入的语句是 【15】 。(分数:2.00)填空项 1:_二级 C+笔试-268 答案解析(总分:100.00,做题时
23、间:90 分钟)一、选择题(总题数:30,分数:70.00)1.下列描述中,表达错误的是( )。(分数:2.00)A.公有继承时基类中的 public成员在派生类中仍是 public的B.公有继承时基类中的 private成员在派生类中仍是 private的 C.公有继承时基类中的 protected成员在派生类中仍是 protected的D.私有继承时基类中的 public成员在派生类中是 private的解析:解析 C+中,继承方式控制了基类中具有不同访问属性的成员在派生类中的访问属性。基类中的私有成员在派生类中是隐蔽的,只能在基类内部访问。所以选项 B 是错误的。派生类中的成员不能访问基
24、类中的私有成员,但可以访问基类中的公有成员和保护成员。此时派生类对基类中各个成员的访问能力与继承方式无关,但继承方式将影响基类成员在派生类中的访问控制属性。基类中公有成员和保护成员在派生类中的访问控制属性将随着继承方式而改变:派生类从基类公有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员;派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都改变为私有成员;派生类从基类保护继承时,基类的公有成员在派生类中改变为保护成员,基类的保护成员在派生类中仍然为保护成员。所以,选项 A、C 和 D都是正确的。2.下列关于虚函数的说法中,正确的是( )。(分数:2.00)A.如果在
25、重定义虚函数时使用了保留字 virtual,则该重定义函数仍然是虚函数B.虚函数不得声明为静态函数 C.虚函数不得声明为另一个类的私有函数D.派生类必须重新定义基类的虚函数解析:解析 使用虚函数时必须注意下列事项:只有类的成员函数才能说明为虚函数。这是因为虚函数仅适用于有继承关系的类对象,所以普通函数不能说明为虚函数。静态成员函数不能是虚函数,因为静态成员函数不受限于某个对象。内联函数不能是虚函数,因为内联函数是不能在运行中动态确定其位置。即使虚函数在类的内部定义,编译时仍将其看作是非内联的。构造函数不能是虚函数,因为构造时对象还是一片未定型的空间。只有在构造完成后,对象才能成为一个类的名副其
26、实的实例。析构函数可以是虚函数,而且通常说明为虚函数。说明虚函数的目的在于;使用 delete 运算符删除一个对象时,能确保析构函数被正确地执行。这是因为设置虚析构函数后,可以利用动态联编方式选择析构函数。一般要求基类中说明了虚函数后,派生类说明的虚函数应该与基类中虚函数的参数个数相等,对应参数的类型相同。如果不相同,则将派生类虚函数的参数类型强制转换为基类中虚函数的参数类型。3.有以下程序:#include iostreamusing namespace std;class sampleprivate:int x;public:void setx(int i)x=i;int putx ()r
27、eturn x;int main ( )sample *p;sample A3;A0 .setx(5);A1 .setx (6);A2 .setx(7);for (int j=0;j3;j+)p=coutp-putx () “, “;coutend1;return 0;执行后执行结果是( )。(分数:2.00)A.5,6,7, B.5,5,5,C.6,6,6,D.7,7,7,解析:解析 对象数组是指数组元素为对象的元素,该数组中的每一个元素都是同一个类的对象。程序中,定义了类 sample的对象数组 A,并调用各个对象的成员函数给其私有数据成员赋值。然后通过 for循环将其值输出。4.Visu
28、alFoxPro是一种( )。(分数:2.00)A.数据库管理系统软件 B.操作系统软件C.文字处理软件D.CAD软件解析:解析 Visual FoxPro 属于小型数据库管理系统软件,它是微软的产品,只具备数据库管理系统的一些简单功能。5.下列关于指针运算的描述中,错误的是( )。(分数:2.00)A.在一定条件下,两个指针可以相加 B.在一定条件下,两个指针可以进行逻辑判断C.在一定条件下,指针可以为空值D.在一定条件下,两个指针可以相互赋值解析:解析 本题考核指针的赋值和运算。在 C+语言中,指针可以进行赋值运算、算术运算、比较运算(逻辑判断)。但是在任何条件下,两个指针都不能允许相加。
29、因为地址相加后可能会对内存进行不合法的访问。所以选项 A的描述是错误的。6.下面这个程序段的时间复杂度是( )。for (i=1; in; i+)y=y+1;for (j=0;j=(2*n);j+)X+;(分数:2.00)A.O(10g2n)B.O(n)C.0(nlog2n)D.O(n2) 解析:解析 语句的频度指的是该语句重复执行的次数。一个算法中所有语句的频度之和构成了该算法的运行时间。在本例算法中,其中语句“y=y+1;”的频度是 n-1,语句“x+;”的频度是(n-1)(2n+1)=2n2-n-1, 则该程序段的时间复杂度是 T(n)=n-1+2n 2-n-1=O(n2)。7.下面是“
30、二维向量” vector2D 的定义,其中作为成员函数重载的运算符“+”的功能是将两向量的分量 x和 y对应相加,然后返回作为相加结果的新对象。那么应该在横线上填入的语句是( )。class vector2Dprivate:double x; /x分量double y; /y分量public:vector2D(double x0=0,double y0=0) :x(x0),y(y0) void show(cout (, y) ;_;vector2D : operator + (vector2D(分数:2.00)A.B.vector2D operator + (vector2D int main
31、()char *p=“abcdefgh“,*r;long *q;q=(long *)p;q+;r=(char *)q;coutrend1;return 0;上述程序的输出结果是( )。(分数:2.00)A.abcdefghB.0C.abcdD.efgh 解析:解析 本题定义了一个字符型指针变量 p,并通过赋初值让它指向了一个字符串。还定义了另一个字符型指针变量 r和一个长整型指针变量 q。首先通过语句“q=(long*)p;”,把 p的地址值强制转换为长整型地址值并赋值给 q,然后执行“q+;”,地址值增加了 4,执行语句“r=(char*)q;”,把长整型指针变量 q的值再强制转换成字符型地
32、址值并赋给 r,r 的值应为字符串中字符“e”的地址。最后输出r指向的字符串。10.下列变量定义中,合法的是( )。(分数:2.00)A.short_a=1-1e-1;B.doubleb=1+5e2.5; C.long do=0xfdaL;D.float2_and=1-e-3;解析:解析 本题考核变量名的定义和赋值。在选项 A中,把实型表达式作为初值赋给整型变量,显然是非法的。在选项 C中,使用了 C+保留字 do作为变量名,是错误的。在选项 D中,表达式中的标识符 2 and是非法的。11.以下方法不属于结构化分析方法的是( )。(分数:2.00)A.面向数据流的结构化分析方法B.面向数据结
33、构的 Jackson方法C.面向数据结构的结构化数据系统开发方法D.面向对象的分析方法 解析:解析 常见的需求分析方法有:结构化分析方法和面向对象的分析方法。其中结构化分析方法包括面向数据流的结构化分析方法、面向数据结构的 Jackson方法和面向数据结构的结构化数据系统开发方法。12.下列叙述中,不正确的是( )。(分数:2.00)A.在一个函数中,可以有多条 return语句B.函数的定义不能嵌套,但函数的调用可以嵌套C.函数必须有返回值 D.不同的函数中可以使用相同名字的变量解析:解析 选项 A是正确的,例如在一个包含 GOTO语句的函数中,就可以有多条 return 语句。选项B是正确
34、的,函数的定义不能嵌套,否则进入死循环,但函数的调用可以嵌套,如在一个递归算法中。选项 C是错误的,函数不一定有返回值。选项 D是正确的,在函数中定义的变量属于局部变量,生存期在函数内部,因此不同的函数中可以使用相同名字的变量。13.下列关于对象概念的描述中,错误的是( )。(分数:2.00)A.C+中的对象就是 C语言中的结构变量 B.对象代表着正在创建的系统中的一个实体C.对象是一个状态和操作(或方法)的封装体D.对象之间的信息传递是通过消息进行的解析:解析 C+中的对象与 C语言中的结构变量是不一样的。对象是某一类类型的变量,而结构变量是结构类型的变量。同时 C+对 C的结构有了扩展,结
35、构可以和类一样使用。结构除了可以包含数据成员外,还可以包含成员函数;成员也可以加上 public、private 和 protected访问控制;结构之间也可以继承。两者惟一的不同之处是,结构中的成员默认是公有的,结构的继承默认是公有的,而类的继承默认是私有的,类的成员默认也是私有的。14.若有以下程序:#include iostreamusing namespace std;class Baseprivate:int a,b;public:Base(int x, int y)a=x;b=y;void disp ()couta“ “bend1;class Derived : public Ba
36、seprivate:int c;int d;public:Derived(int x,int y, int z,int m) :Base(x,y)c=z;d=m;void disp ()coutc“ “dend1;int main()Base b(5,5),*pb;Derived obj(1,2,3,4);pb=pb-disp();return 0;执行程序后的输出结果是( )。(分数:2.00)A.1,2 B.3,4C.2,3D.5,5解析:解析 本题考核基类指针的使用。本题首先定义了一个基类 Base和一个由 Base派生出来的派生类 Derived。在主函数中,定义了一个基类 Base指
37、针 pb和基类对象 b,还定义了派生类 Derived的对象obj。然后将派生类对象 obj的地址赋值给指向基类 Base的指针 pb。由于 Derived是 Base的子类型,因此允许上述赋值,但这时指针 pb只能使用从基类 Base继承的成员,即当 pb指向 obj对象时,pb-disp还是调用基类 Base的成员函数 disp。所以程序最后输出的对象 d中对基类成员的初始化值,即 1,2。15.在一个长度为 n的线性表中插入一个元素,最好情况下需要移动的数据元素数目(分数:2.00)A.0 B.1C.nD.n/2解析:解析 在一般情况下,要在第 i个元素之前插入一个新元素时,首先是从最后
38、一个元素开始,直到第 i个元素之间共 n-i+1个元素依次向后移动一个位置,移动结束后,第 i个位置就被空出,然后将新元素插入到第 i项。最好情况指的是在线性表的最后的元素之后插入一个新元素。则不需要移动表中元素,答案为 A。16.在一个容量为 10的循环队列中,若头指针为 6,尾指针为 1,则此时该循环队列中共有的元素个数为( )。(分数:2.00)A.4B.5 C.6D.7解析:解析 题中队列为循环队列,由于尾指针为 1比头指针小,说明尾指针已移动到 (10+1),即 11处,所以此时队列中元素个数为 11-6=5。17.需求分析阶段最后提供的文档是软件的( )。(分数:2.00)A.功能
39、说明书B.加工说明书C.可行性分析报告D.需求规格说明书 解析:解析 选项 A、B、C 都是需求分析阶段前段时间的文档。需求分析阶段最后成果就是软件需求规格说明书,它是软件开发的重要文档之一。18.有以下程序:#include iostreamusing namespace std;class Rpublic:R(int f1,int r2)R1=r1;R2=r2;void print();void print ()const;private:int R1, R2;void R: :print()coutR1“, “R2end1;void R: :print() constcoutRl“, “
40、R2end1;int main ()R a(5,4);const R b(20,52);b.print ();return 0;执行后的输出结果是(分数:2.00)A.5,4B.20,52 C.0,0D.4,5解析:解析 使用 const关键词修饰的对象成为常对象,题中对象 b被声明为类 R的常对象。使用const关键词说明的成员函数称为常成员函数,类 R中用 const重载了函数 print()。在使用常对象和常成员函数时应注意以下几点:const 是函数类型的一个组成部分,因此在函数部分也要带 const关键词。常成员函数不能更新对象的数据成员,也不能调用该类中没有用 const修饰的成员
41、函数。如果将一个对象说明为常对象,则通过该常对象只能调用它的常成员函数,不能调用其他的成员函数。const 关键词可以参与区分重载函数。本题中,b 为类 R的常对象,通过 b只能调用类 R的常成员函数 print()输出 20,52。19.有以下程序:#include iostream#include stringusing namespace std;class Y;class Xprivate:int x;char *strx;public:X(int a, char *str)x=a;strx=new charstrlen(str)+1;strcpy(strx,str);void sho
42、w(Y ;class Yprivate:int y;char *stry;public:Y(int b,char *str)y=b;stry=new charstrlen(str)+1;strcpy(stry, str);friend void X: :show(Y ;void X: :show(Y coutob, stryend1;int main ( )X a(10,“X“);Y b (20, “Y“);a. show(B) ;return 0;执行后的输出结果是( )。(分数:2.00)A.X,Y B.a,bC.X,XD.Y,Y解析:解析 本题考核类的定义和友元函数的应用。该程序中,类
43、X的成员函数 show()在类 Y中说明为友元,因此,在该友元成员 show()中可以访问类 Y的私有成员 stry。成员函数 show()的功能就是输出类 X的私有成员 strx和 Y对象 ob的私有成员 stry,主函数 main()中定义了 X类的一个对象 a和 Y类的一个对象 b,并且都进行了初始化。然后调用对象 a的成员函数 show,输出对象 a中私有成员 strx中的内容和对象 b中私有成员 stry中的内容,即字符串stringX和 stringY。20.有以下程序:#include iostreamusing namespace std;int main()int inton
44、e;int intone=5;rInt=7;coutintOne“,“rIntend1;return 0;上述程序执行后的输出结果是( )。(分数:2.00)A.5,7B.7,5C.5,5D.7,7 解析:解析 程序中,引用 rim用 intone初始化以后,无论改变 intOne还是 rInt,实际上都是intone,两者的值是一样的。所以执行语句“rInt=7;”后,整型变量 intOne、 rInt 的值都被置为 7。21.若有以下程序:#include iostreamusing namespace std;int main()int a4 4 = 1,2,3,-4,0,-12,-13
45、,14,-21,23,0,-24,-31,32,-33,0;int i,j,s = 0;for(i=0;i4;i+)for(j=O;j4;j+)if(ai j =0)continue;s+=a i j;coutsend1;return 0;执行后的输出结果是( )。(分数:3.00)A.-138 B.141C.75D.-1解析:解析 本题属于综合题,考查多个方面的知识点。程序首先定义了一个二维数组 a,并初始化其值。在内层 for循环体中,遇到大于等于 0的数,就继续执行下次循环,否则就执行“s+=aij”,即把其值累加并保存在变量 s中。所以本题双重循环的功能是:计算数组中所有负数的累加和,
46、即 s=-138。22.以下过程设计工具不属于图形工具的是( )。(分数:3.00)A.程序流程图B.PADC.HIPOD.PDL 解析:解析 常用的过程设计工具有图形工具、表格工具和语言工具,其中图形工具包括:程序流程图、N-S、PAD、HIPO:表格工具有判定表:语言工具有 PDL(伪码)。23.若有以下程序:#include iostreamusing namespace std;#define PI 3.14class Pointprivate:int x,y;public:Point(int a,int b) x=a;y=b;int getx()return x;int gety()
47、return y;class Circle : public Pointprivate:int r;public:Circle(int a, int b,int c) :Point(a,b) r=c;int getr()return r;double area()return PI*r*r;int main()Circle c1(5,7,10);coutc1.area()end1;return 0;程序执行后的输出结果是( )。(分数:3.00)A.314 B.157C.78.5D.153.86解析:解析 本题考核派生类的定义和应用。本程序设计了一个点类 Point,包含了横、纵两个坐标数据 x和 y,由它派生出了圆类 Circle,并加入了新的数据成员,即一个半径数据,和一个求圆面积的函数成员 area。在主函数中,首先定义了一个圆 Circle类的对象 c1,并通过它的构造函数初始化其数据成员。由此可知,其半径 r的值为