面向对象第四次作业答案
面向对象程序设计技术作业四一、填空题1、在定义类对象的语句执行时,系统在建立每个对象的过程中将自动调用该类的构造函数使其初始化。
2、当一个类对象被撤消时将自动调用该类的析构函数。
3、对基类数据成员的初始化是通过执行派生类构造函数中的初始化表来实现的。
4、对一个类中的数据成员的初始化可以通过构造函数中的初始化表实现,也可以通过构造函数中的赋值语句实现。
5、在一个派生类中,对基类成员、类对象成员和非类对象成员的初始化次序是先基类成员,后类对象成员,最后为非对象成员。
6、当撤消一个含有基类和类对象成员的派生类对象时,将首先完成派生类本身的析构函数定义体的执行,接着完成类对象成员的析构函数定义体的执行,最后完成基类成员的析构函数定义体的执行。
7、设px是指向一个类动态对象的指针变量,则执行”delete px;”语句时,将自动调用该类的析构函数。
8、当一个类对象离开它的作用域时,系统将自动调用该类的析构函数。
9、假定一个类对象数组为A[N],当离开它的作用域时,系统自动调用该类析构函数的次数为N次。
10、假定AB为一个类,则执行”AB a[10];”语句时,系统自动调用该类构造函数的次数为 10次。
11、假定用户没有给一个名为AB的类定义构造函数,则系统为其隐含定义的构造函数为空构造函数。
12、假定用户没有给一个名为AB的类定义析构函数,则系统为其隐含定义的析构函数为空构造函数。
13、若需要把一个函数”void F();”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句: friend void F();。
14、若需要把一个类AB定义为一个类CD的友元类,则应在类CD的定义中加入一条语句: feiend class AB;。
15、假定一个类AB中有一个静态整型成员bb,在类外为它进行定义并初始化为0时,所使用的语句为 AB:bb=0;。
16、假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为 AB:bb 。
17、当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为 n-1 。
18、假定AB为一个类,则该类的拷贝构造函数的声明语句为AB:AB(AB&) 。
19、对类对象成员的初始化是通过执行构造函数中的初始化表完成的。
20、对于类中定义的成员,其隐含访问权限为 private ,对于结构中定义的成员,其隐含访问权限为 public 。
21、一个类的友元函数或友元类能够通过成员操作符访问该类的所有数据成员和函数成员。
结果,则该成员函数的声明语句为: AB operator+(AB,AB); 。
23、在C++流类库中,根基类为 ios 。
24、在C++流类库中,输入流类和输出流类的名称分别为 istream 和 ostream .25、若要在程序文件中进行标准输入输出操作,则必须在开始的#include命令中使用头文件。
26、若要在程序文件中进行文件输入输出操作,则必须在开始的#include命令中使用头文件。
27、当从字符文件中读取回车和换行两个字符时,被系统看作为一个换行符。
28、当使用ifsream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为读取的文本文件,当使用ofstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为写入的文本文件。
29、当需要使用istrstream流类定义一个流对象并联系一个字符串时,应在文件开始使用#include命令,使之包含文件。
二、写出下列程序运行后的输出结果1.#include<>class A{int a,b;public:A() {a=b=0;}A(int aa, int bb){a=aa;b=bb;cout<<a<<''<<b<<endl;}};void main(){A x, y(6,3), z(8,10);} 输出结果:2.#include<>class A{int a,b;public:A(int aa=0, int bb=0):a(aa),b(bb){cout<<"Constructor!"<<a+b<<endl;}};void main(){A x, y(2,5), z(y);} 输出结果:3.#include<>class A{int *a;public:A(int aa=0){cout<<"Constructor!"<<*a<<endl;}};void main(){A x[2];A *p=new A(5);delete p;}输出结果:4.#include<>class A{int a;public:A(int aa=0):a(aa){}~A(){cout<<"Destructor!"<<a<<endl;}};void main(){A x(5);A *p=new A(10);delete p;} 输出结果:5.#include<>class A{int *a;public:A(int x){a=new int(x);cout<<"Constructor!"<<*a<<endl;}~A(){delete a;cout<<"Destructor!"<<endl;} };void main(){A x(9),*p;p=new A(12);delete p;} 输出结果:6.#include<>class A{int a;public:A(int aa=0):a(aa){cout<<"Constructor A!"<<a<<endl; }class B:public A{int b;public:B(int aa,int bb):A(aa),b(bb){cout<<"Constructor B!"<<b<<endl; }};void main(){B x(2,3),y(4,5);} 输出结果:7.#include<>class A{int a;public:A(int aa=0){a=aa;}~A(){cout<<"Destructor A!"<<a<<endl;}};class B:public A{int b;public:B(int aa=0,int bb=0):A(aa){b=bb;}~B(){cout<<"Destructor B!"<<b<<endl;}};void main(){B x(5),y(6,7);}输出结果:8.#include<>#include<>class A{int a,b;char op;public:A(int aa,int bb,char ch){a=aa;b=bb;op=ch;}int Comp(){switch(op){case'+':return a+b;case'-':return a-b;case'*':return a*b;case'/':if(b!=0)return a/b;else exit(1);case'%':if(b!=0)return a%b;else exit(1); default:exit(1); }}void SetA(int aa,int bb,char ch){a=aa;b=bb;op=ch; }void main(void){A x(3,5,'*');int a=();(4,9,'+');a+=();(13,8,'%');a+=();cout<<"a="<<a<<endl;}输出结果:9.#include<>class B{int a,b;public:B(){a=b=0;}B(int aa,int bb){a=aa;b=bb;}B operator+(B&x){B r;=a+;=b+;return r;}B operator-(B&x){B r;=;=;return r;}void OutB(){cout<<a<<' '<<b<<endl;}};void main(){B x(6,5),y(13,3),z1,z2;z1=x+y;z2=x-y;();();}输出结果:10.#include<>template<class TT>class FF{TT a1,a2,a3;public:a1=b1;a2=b2;a3=b3;}TT Sum(){return a1+a2+a3;} };void main(){FF<int>x(8,3,4),y(5,9,11);cout<<()<<' '<<()<<endl; }输出结果:三、写出下列每个函数的功能1. #include <>#include <>#include <>void JA(char *fname){ofstream fout(fname);char a[20];cin>>a;while(strcmp(a,"end")!=0){fout<<a<<endl;cin>>a;}();}void JB(char *fname){ifstream fin(fname);char a[20];int i=0;while(fin>>a){cout<<a<<endl;i++;}();cout<<"i="<<i<<endl;}void main(){JA("c:\");JB("c:\");}2.#include <>#include <>{ifstream fin(fname);char a[20];int i=0;while(fin>>a){cout<<a<<endl;i++;}();cout<<"i="<<i<<endl;}3.#include <>#include <>void JC(char *fname,int n){ofstream fout(fname,ios::out|ios::binary);int x;for(int i=0;i<n;i++){cin>>x;((char *)&x,sizeof(x));}();}void JD(char * fname){ifstream fin(fname,ios::in|ios::nocreate|ios::binary);int x,s=0,n=0;while((char *)&x,sizeof(x))){s+=x;n++;}cout<<n<<' '<<s<<' '<<float(s)/n<<endl;;}void main(){JC("c:\",5);JD("c:\");}4.#include <>#include <>void JD(char * fname){ifstream fin(fname,ios::in|ios::nocreate|ios::binary);int x,s=0,n=0;s+=x;n++;}cout<<n<<' '<<s<<' '<<float(s)/n<<endl;;}。
面向对象程序设计课后答案(完整版)
第二章2-4#include <iostream>using namespace std;Add(int a,int b);int main(){int x,y,sum;cout<<"please input x and y:";cin>>x>>y;sum = add(x,y);cout <<x<<"+"<<y<<"="<<sum<<endl;}Add(int a,int b){return a+b;}2-5(1)this is a C++ program.(2)x=50.6 y=10 z=Ax=216.34 y=10 z=Ax=216.34 y=2 z=Ax=216.34 y=2 z=E(3)x y z500 1000 0500 1500 1500500 200 15002-6#include <iostream>using namespace std;int main(){int *p,*init;int countp=0;int countn=0;p = new int[20];init = p;for(int i=0;i<20;i++){cin>>*p;p++;}p = p-20;for( i=0;i<20;i++){if(*p>0) countp++;if(*p<0) countn++;cout<<*p<<" ";p++;}cout<<"正数有:"<<countp<<endl; cout<<"负数有:"<<countn<<endl;p = init;delete[] p;return 0;}2-7不做要求#include <iostream>//#include <string>using namespace std;void checkagescore(string name,int age) {if (name == "exit") throw name;if(age<0||age>50)throw age;int main(){string name;int age;for(int i=0 ;i<5 ;i++ ){cin.ignore ();getline(cin,name );cin>>age ;try{checkagescore(name,age);}catch( string){cout<<"exception :name is exit"<<endl;continue;}catch(int){cout<<"exception :age is not proper"<<endl;continue;}cout<<"name:"<<name<<" age :"<<age<<endl;}return 0;}第三章3-1(1)A (2)C (3)B (4)C (5)C(6)B (7)B (8)C (9)C3-7(1)main()函数中p1.age = 30;语句是错误的。
《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案4
《面向对象程序设计JA V A语言程序设计》期末考试试题及部分答案1一、单选题:(每题1分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项的标记写在题干后的括号内。
1.下列语句序列执行后,k 的值是( B )。
int m=3, n=6, k=0;while( (m++) < ( -- n) ) ++k;A) 0 B) 1 C) 2 D) 32.设i、j 为int型变量名,a 为int型数组名,以下选项中,正确的赋值语句是( B )。
A) i = i + 2 B) a[0] = 7;C) i++ - --j; D) a(0) = 66;3.Java语言的类间的继承关系是( B )。
A) 多重的B) 单重的C) 线程的D) 不能继承4.设有定义int i = 6 ;,则执行以下语句后,i 的值为( C )。
i += i - 1;A) 10 B) 121 C) 11 D) 1005.下列选项中,用于在定义子类时声明父类名的关键字是( C )。
A)interface B) package C) extends D) class6.若已定义byte[ ] x= {11,22,33,-66} ;其中0≤k≤3,则对x数组元素错误的引用是( C )。
A) x[5-3] B) x[k] C) x[k+5] D) x[0]7.下列语句序列执行后,ch1 的值是( B )。
char ch1='A',ch2='W';if(ch1 + 2 < ch2 ) ++ch1;A) ‘A' B) ‘B' C) ‘C' D) B8.下列语句序列执行后,i 的值是( D )。
int i=8, j=16;if( i-1 > j ) i--; else j--;A) 15 B) 16 C) 7 D) 89.下列语句序列执行后,k 的值是( C )。
C++面向对象程序设计课后题答案
面向对象程序设计课后题答案第二章C++概述【2.6】D【2.7】D【2.8】A【2.9】A【2.10】B【2.11】A【2.12】C【2.13】B【2.14】D【2.15】C【2.16】D【2.17】C【2.18】程序的运行结果:101【2.19】程序的运行结果:10 10【2.20】程序的运行结果:1020【2.22】编写一个C++风格的程序,用动态分配空间的方法计算Fibonacci数列的前20项并存储到动态分配的空间中。
#include <iostream.h>int main(){int *p,i;p[0]=1;p[1]=1;for(i=2;i<20;i++){p[i]=p[i-1]+p[i-2];}for(i=0;i<20;i++){cout<<p[i]<<endl;}return 0;}【2.23】编写一个C++风格的程序,建立一个被称为sroot()的函数,返回其参数的二次方根。
重载sroot()3次,让它返回整数、长整数与双精度数的二次方根。
#include <iostream.h>#include<math.h>double sroot(int m){return sqrt(m);}double sroot(long m){return sqrt(m);}double sroot(double m){return sqrt(m);}int main()cout<<"sroot(145)="<<sroot(145)<<endl;cout<<"sroot(123456)="<<sroot(123456)<<endl;cout<<"sroot(1.44)="<<sroot(1.44)<<endl;return 0;}【2.24】编写一个C++风格的程序,解决百钱问题:将一元人民币兑换成1、2、5分的硬币,有多少种换法?#include <iostream.h>int main(){int k=0;for(int i=0;i<=20;i++){for(int j=0;j<=50;j++){if(100-5*i-2*j>=0){k++;}}}cout<<"将一元人民币兑换成1、2、5分的硬币,共有"<<k<<"种换法"<<endl;return 0;}【2.25】编写一个C++风格的程序,输入两个整数,将它们按由小到大的顺序输出。
面向对象程序设计C++答案4
第3章函数和函数模板习题答案教材:C++程序设计[2008年版]--4737作者:刘振安出版社:机械工业出版社一、填空题1. 函数abc的原型说明,即函数abc具有double和char两个参数,返回值的类型为double2. inline3. 传值和传引用4. 函数func具有char和int两个参数,返回值的类型为char&5. char* fun(char,int&);二、单项选择题1-3 ACC//三、改错题//说明:程序中的注释是题目的参考答案//1.下面程序错在何处?template<class T>T fun(T x){T y;y=x*x-T;//error T是虚拟参数类型,不能做算术运算return y;}//2.找出下面程序中的错误并改正之。
#include<iostream.h>template<class Type>Type max(T x,y)//error 可改为:Type max(Type x,Type y){ return (x>y)?(x):(y); }//3.找出下面程序中的错误并改正之。
void change(const string&s)//error1:可改为:void change(string&s){ s=s+"pig!";}}//error2:去掉这个多余的“}”void main(){string str(" it is a ");change(str);}//说明:错误在const修饰形参s,含义是该函数只能使用形参得到的值,而不能改变形参的值,//但结合下一条语句看,函数体中改变了对象s的值,故将函数头改为:void change(string&s)//另外,如果读者要上机调试的话,程序还应包含iostream和string两个头文件//1、编写一个求方程ax 2+bx+c=0的根的程序,用3个函数分别求当b2-4ac 大于0、等于0和小于0时的方程的根。
最新国家开放大学电大本科《面向对象程序设计》期末题库及答案
最新国家开放大学电大本科《面向对象程序设计》期末题库及答案考试说明:本人针对该科精心汇总了历年题库及答案,形成一个完整的题库,并且每年都在更新。
该题库对考生的复习、作业和考试起着非常重要的作用,会给您节省大量的时间。
做考题时,利用本文档中的查找工具,把考题中的关键字输到查找工具的查找内容框内,就可迅速查找到该题答案。
本文库还有其他网核及教学考一体化答案,敬请查看。
《面向对象程序设计》题库及答案一一、单项选择题(每小题2分,共20分)1.设x和y均为bool量,则x||y为假的条件是( )。
A.它们均为真 B.其中一个为真C.它们均为假 D.其中一个为假2.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}}”,则元素a[1][2]的值为( )。
A.2 B.4 C.6 D.83.假定P是具有int* *类型的指针变量,则给P赋值的正确语句为( )。
A.p=new int B.p=new int*C.p=new int** D.p=new int[10]4.软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进行相应的软件更新的难易程度叫做软件的( )。
A.可维护性 B.可复用性C.兼容性 D.正确性5.若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字( )放在函数原型或函数头的前面。
‘A.in B.inlineC.inLine D.InLiner .6.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾的后一个位置为( )。
A.1ength+1 B first+lengthC.(first+1ength—1)%MS D.(first+length)%MS7.假定一个类的构造函数为“A(int aa,int bb){a=aa;b=aa*bb;)”,则执行“A x(4,5);”语句后,X.a和x.b的值分别为( )。
面向对象分析与设计练习题及参考答案
《面向对象分析与设计》练习题及参考答案一、思考题:1. How many phases are included in system development? (brief description)2. Describe a system and the components of a system model.3. What two key components distinguish an information system from an automated information system?4. What is systems analysis and design?5. Who are the six stakeholder groups in information systems?6. What are a system designer’s and system builder’s roles in information systems development?7. What is the system analyst role in systems development as it related to the other stakeholders?8. List the six steps of the general problem-solving approach.9. List two types of quality certification applicable to information systems.10. What are legacy systems? Name two types of problems encountered in legacy systems.11. What is ERP? What is electronic commerce?12. Differentiate between management information systems and decision support systems.13. What role dose a data warehouse play in a decision support system?14. List three focuses for an information systems.15. What is the role of the network in information systems?16. 面向过程的系统分析与设计存在的问题是什么?通过什么OO技术来解决?17. 请画图说明面向对象系统的基本构造。
Java面向对象程序设计_习题解答(耿祥义)
书后习题参考答案习题1 2习题2 3习题3 4习题4 10习题5 11习题6 14习题7 15习题9 16习题12 20习题13 25习题14 27习题15 28习题16 31习题17 39习题11.James Gosling2.(1)使用一个文本编辑器编写源文件。
(2)使用Java编译器(javac.exe)编译Java源程序,得到字节码文件。
命令:javac –d . 文件名称.java(3)使用Java解释器(java.exe)运行Java程序。
命令:java 包名.类名3.Java的源文件是由若干个书写形式互相独立的类、接口、枚举等组成。
应用程序中可以没有public类,若有的话至多可以有一个public类。
4.新建JAVA_HOME系统环境变量,指向安装目录在系统环境变量path中增加内容:%JAVA_HOME%\bin;新建系统环境变量classpath并填入三项:.; %JAVA_HOME%\lib\dt.jar; %JAVA_HOME%\lib\tools.jar5. B6. Java源文件的扩展名是.java。
Java字节码的扩展名是.class。
7. D8.(1)Speak.java(2)生成两个字节码文件,这些字节码文件的名字Speak.class和Xiti8.class(3)java Xiti8(4)执行java Speak的错误提示Exception in thread "main" ng.NoSuchMethodError: main执行java xiti8得到的错误提示Exception in thread "main" ng.NoClassDefFoundError: xiti8 (wrong name: Xiti8)执行java Xiti8.class得到的错误提示Exception in thread "main" ng.NoClassDefFoundError:Xiti8/class执行java Xiti8得到的输出结果I'm glad to meet you9.属于操作题,解答略。
面向对象课后题答案
D. 使用内联函数,可以减小程序代码大小,但使程序执行的速度减慢
【结果分析】
内联函数主要是解决程序的运行效率问题。在程序编译时,编译系统将程序中出现内联函数调用的地方用函数体进行替换,进而减少了程序运行的时间,但会增加程序代码的大小。它是以空间换取时间,因此内联函数适用于功能不太复杂,但要求被频繁调用的函数。
B. 对象实际是功能相对独立的一段程序
C. 各个对象间的数据可以共享是对象的一大优点
D. 在面向对象的程序中,对象之间只能通过消息相互通信
【结果分析】
对象是计算机内存中的一块区域。在对象中,不但存有数据,而且存有代码,使得每个对象在功能上相互之间保持相对独立。对象之间存在各种联系,但它们之间只能通过消息进行通信。
C. C++对C语言进行了一些改进 D. C++和C语言都是面向对象的
【结果分析】
C语言是面向过程的。C++语言是一种经过改进的更为优化的C语言,是一种混合型语言,既面向过程也面向对象。
(6) 面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依存、不可分割的整体来处理。
A. 算法 B. 信息 C. 数据隐藏 D. 数据抽象
四、 判断题
(1) 在高级程序设计语言中,一般用类来实现对象,类是具有相同属性和行为的一组对象的集合,它是创建对象的模板。( √ )
(2) C++语言只支持面向对象技术的抽象性、封装性、继承性等特性,而不支持多态性。( × )
【结果分析】
C++语言不仅支持面向对象技术的抽象性、封装性、继承性等特性,而且支持多态性。
兰大《面向对象程序设计》15春在线作业4 答案
《面向对象程序设计》15春在线作业4一、单选题(共13 道试题,共52 分。
)1. 以下不合法的字符常量是()A. \018'B. '\”'C. '\\'D. ‘\xcc'正确答案:A2. 以下叙述中正确的是()A. 预处理命令行必须位于C源程序的起始位置B. 在C语言中,预处理命令行都以“#”开头C. 每个C程序必须在开头包括预处理命令行:#includeD. C语言的预处理不能实现宏定义和条件编译的功能正确答案:C3. 在下列关键字中,不能用来表示继承方式的是()A. privateB. staticC. publicD. protected正确答案:B4. 通过()调用虚函数时,采用动态束定A. 对象指针B. 对象名C. 成员限定D. 派生类名正确答案:A5. 有以下程序main() { char *p[]={"3697","2584"}; int i,j; long num=0; for(i=0;i<2;i++) {j=0; while(p[i][j]!='\0') { if((p[i][j]-‘0')%2)num=10*num+p[i][j]-'0'; j+=2; } } printf("%d\n"num); } 程序执行后的输出结果是()A. 35B. 37C. 39D. 3975正确答案:C6. C++语言的跳转语句中,对于break和continue说法正确的是()A. break语句只应用于循环体中。
C++面向对象程序设计试题带答案(四)
C++面向对象程序设计模拟试题四一、单项选择题(本大题共10小题,每小题2分,共20分)1.下列关于C++函数的说明中,正确的是()。
A)内联函数就是定义在另一个函数体内部的函数 B)函数体的最后一条语句必须是return语句C)调用一个函数之前,如果还没有定义这个函数,必须先声明其原型D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式2.假定MyCIass为一个类,那么下列的函数说明中,()为该类的无参构造函数。
A)void MyClass(); B)~MyClass(int n); C)MyClass( ); D)~MyClass( );3.下列叙述中,错误的是()。
A)派生类可以使用private派生B)对基类成员的访问必须是无二义性的C)基类成员的访问能力在派生类中维持不变D)赋值兼容规则也适用于多继承的组合4.当一个类的某个函数被说明为virtual时,该函数在该类及其所有派生类中()。
A. 都是虚函数B. 只有被重新说明为vittual时才是虚函数C. 都不是虚函数D. 上面都不正确5.派生类的构造函数的成员初始化表中,不能包含()。
A)基类的构造函数B)派生类中子对象的初始化C)基类中子对象的初始化D)派生类中一般数据成员的初始化6.下列是重载加法运算符的函数原型声明,其中错误的是()。
A)MyClass operator+(double,double); B)MyClass operator+(double,MyClass);C)MyClass operator+(MyClass,double); D)MyClass operator+(MyClass,MyClass);7.派生类中的成员不能直接访问基类中的()成员。
A)public B)private C)virtual D)protected8.实现运行时的多态性要使用()。
A)重载函数B)析构函数C)构造函数D)虚函数9.如果在类MyClass的外面使用函数调用MyClass::f();则函数f()是类MyClass的()。
