当前位置:文档之家› 模拟题二及参考答案

模拟题二及参考答案

模拟题二及参考答案1. 按照标识符的要求,_______符号不能组成标识符。

(2分)A.连接符B.下划线C.大小写字母D.数字字符2. 面向对象程序语言有_________。

(2分)A..C语言B.PASCAL语言C.C++语言D.FORTRAN语言3. 为了避免嵌套的if-else语句的二义性,C语言规定else总是与_____组成配对关系。

(2分)A.缩排位置相同的ifB.在其之前未配对的ifC.在其之前未配对的最近的ifD.同一行上的if4. 下面有关for循环的正确描述是_______。

(2分)A.for循环只能用于循环次数己经确定的情况B.for循环是先执行循环体语句,后判定表达式C.在for循环中,不能用break语句跳出循环体D.for循环体语句中可以包含多条语句,但要用花括号括起来5. ______是给对象取一个别名,它引入了对象的同一词。

(2分)A.指针B.引用C.枚举D.结构6. 表达式 18/4*Sqrt(4.0)/5 值的数据类型是_______。

(2分)A.intB.floatC.doubleD.不确定7.sizeof(double)是一个______表达式。

(2分)A.整型B.双精度D.函数调用8. 下列引用的定义中,_______是错误的。

(2分)A.int i;int &j=i;B.int i;int &j;j=i;C.float i;float &j=i;D.char d;char &k=d;9.己知:int m=10;下列表示引用的方法中,_______是正确的。

(2分)A.int &X=m;B.int &y=10;C.int&Z;D.float &t=&m10. 有关构造函数的说法不正确的是(2分)A.构造函数名字和类的名字相同B.构造函数在说明类变量时被调用C.构造函数无任何函数类型D.一个类中构造函数有且只有一个11. 对定义重载函数的下列要求中,____是错误的。

(2分)A.要求参数的个数不同B.要求参数中至少有一个类型不同C.要求参数个数相同时,参数类型不同D.要求函数的返回值不同12. 关于动态联编的下列描述中,____是错误的。

(2分)A.动态联编是以虚函数为基础的B.动态联编是在运行时确定所调用的函数代码的C.动态联编调用函数操作是指向对象的指针或对象引用D.动态联编是在编译时确定操作函数的13. 下列运算符中,_____运算符在C++中不能重载。

(2分)A.?:B.+C.-D.<=14. 在C+十类中可以包含________种具有不同访问控制权的成员。

(多选)(3分)A.私有B.公有D.继承15. cout、cerr和clog是______的对象,cout处理标准输出,cerr和clog都处理标准出错信息,只是cerr输出不带缓冲,cout输出带缓冲。

(多选)(3分)A.istreamB.ostream_withassignC.cerrD.clog16. 函数模板的作用_______。

(多选)(3分)A.可以取代重载函数B.创建一个通用功能的函数C.支持多种不同形参D.简化重载函数的函数体设计17. 重载函数的特点______。

(多选)(3分)A.重载函数的形参必须不同: 个数不同或类型不同。

B.编译程序将根据实参和形参的类型及个数的最佳匹配来选择调用函数。

C.编译器以形参名来区分,编译器以返回值来区分。

D.将不同功能的函数声明为重载函数,会出现调用结果的误解、混淆。

18. 描述某类对象的属性或状态的抽象称为____抽象(2分)19. 类成员的访问控制属性中保护类型的说明用____(2分)20. 多态是指类中具有___功能的不同函数使用同一名称来实现(2分)21. 内联函数的显式声明用___关键字(2分)22. 构造派生类对象时,就要对___数据成员、新增数据成员和成员对象的数据成员进行初始化(2分)23. 声明使用静态生存期的对象用___关键字(2分)24. 局部变量是具有___作用域的变量(2分)25. 使用友元用___关键字(2分)26. C++程序按结构可划分为:类___文件、类实现文件和类使用文件(2分)27. 使用I/O流类库打开一个输出文件用于在文件尾添加数据时,文件打开模式应使用标志值________。

(2分)28. 利用I/O流类库中的格式标志值______设置以左对齐格式输出数据。

(2分)29.分析以下程序的执行结果(10分) #include<iostream.h>class Sample {int x,y;public:Sample(){x=y=0;}Sample(int a,int b){x=a;y=b;}void disp(){cout<<"x="<<x<<",y="<<y<<endl;} };void main() {Sample s(2,3), *p=&s;p->disp(); }30.分析以下程序的执行结果(10分) #include<iostream.h>class Sample {int x,y;public:Sample(){x=y=0;} Sample(int a,int b){x=a;y=b;}void disp(){cout<<"x="<<x<<",y="<<y<<endl;} };void main() {Sample s1,s2(2,3);s1.disp();s2.disp(); }31.设计一个Bank类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。

(20分)参考答案:1A2C3C4D5B6C7A8B9A10C11C12A13B14ABC15ABD16ABD17BCD18数据19protected20相似21inline22基类23static24块25friend26申明27ios::app28ios::left29. 解:x=2,y=3本题说明了对象指针的使用方法。

这里通过指向对象的指针来调用对象的成员函数。

对象指针p指向对象s,p->disp()等价于s.disp()。

所以输出为: x=2,y=3.30.解:x=0,y=0x=2,y=3本题说明了构造函数的调用顺序。

首先定义了一个类Sample,在main()中定义了它的两个对象,定义s1对象时调用其默认构造函数(x=0,y=0),定义s2对象时调用其重载构造函数(x=2,y=3),然后,调用各自的成员函数输出各自的数据成员。

所以输出为:x=0,y=0x=2,y=331.解:Bank类包括私有数据成员top(当前账指针),date(日期),money(金额),rest(余额)和sum(累计余额)。

另有一个构造函数和三个成员函数bankin()(处理存入账),bankout()处理取出账)和disp() (输出明细账)。

本题程序如下:#include<stdio.h>#include<string.h>#define Max 100class Bank{int top;char date[Max][10]; // 日期int money[Max]; // 金额int rest[Max]; // 余额static int sum; // 累计余额public:Bank(){top=0;}void bankin(char d[],int m){strcpy(date[top],d);money[top]=m;sum=sum+m;rest[top]=sum;top++;}void bankout(char d[],int m){strcpy(date[top],d);money[top]=-m;sum=sum-m;rest[top]=sum;top++;}void disp();};int Bank::sum=0;void Bank::disp(){int i;printf(" 日期存入取出余额\n"); for(i=0;i<top;i++){printf("%8s",date[i]);if(money[i]<0)printf(" %6d",-money[i]); elseprintf("%6d ",money[i]);printf("%6d\n",rest[i]);}}void main(){Bank obj;obj.bankin("2001.2.5",1000);obj.bankin("2001.3.2",2000);obj.bankout("2001.4.1",500);obj.bankout("2001.4.5",800);obj.disp();}本程序的执行结果如下:日期存入取出余额2001.2.5 1000 1000 2001.3.2 2000 3000 2001.4.1 500 2500 2001.4.5 800 1700。

相关主题