数学院08092C++试题AB卷08级答案.docx
- 文档编号:24018472
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:13
- 大小:19.65KB
数学院08092C++试题AB卷08级答案.docx
《数学院08092C++试题AB卷08级答案.docx》由会员分享,可在线阅读,更多相关《数学院08092C++试题AB卷08级答案.docx(13页珍藏版)》请在冰豆网上搜索。
数学院08092C++试题AB卷08级答案
兰州大学2008~2009学年第二学期
期末考试试卷(A卷)
课程名称:
C++任课教师:
董国雄
学院:
数学与统计学院专业:
隆基班、基地班年级:
2008
一、简答(50分)
1、函数可从哪些途径获得其处理的数据?
答:
函数参数、全局变量、外部文件等。
2、指针和引用作为函数参数的目的是什么?
答:
避免大对象的复制、修改实参的值。
3、使用指针时,对其哪两个方面应有清楚的界定?
判断一个指针是否指向了一个合法对象的原则是什么?
答:
指针值(对象地址),指针类型(指向的对象类型)。
是否为null。
4、一个程序加载到内存后,基本的内存影像有哪几部分,各部分用途是什么?
答:
有四个部分,分别是:
代码段、数据段、栈、堆。
代码段为源程序编译后的机器指令;数据段为程序中的全局或具永久生命期的数据;栈为函数调用使用的可变大小内存区;堆为程序中动态分配内存使用。
5、什么是函数重载,举出一个函数重载机制有效发挥作用例子。
答:
函数重载即用相同的函数名、不同的参数列表定义多个不同的函数,调用时这些函数时,由编译器根据参数列表确定实际调用的函数。
6、面向对象的编程语言和非面向对象的编程语言的根本区别是什么?
答:
面向对象的编程语言提供了定义抽象数据的能力。
7、解释等式“程序=对象+消息”。
答:
在面向对象程序设计当中,将数据和对其操作的方法封装在类中,程序通过实例化类得到对象,对象之间彼此调用方法实现程序功能,彼此调用方法也称为彼此发送消息。
8、构造函数的作用是什么?
构造函数中有几个特别命名了的构造函数,各是什么?
答:
创建对象时,进行对象初始化。
缺省构造函数、拷贝构造函数、转换构造函数。
9、简述类的多态机制,其基础是什么?
答:
向不同对象发送同一消息,不同对象会产生不同行为。
首先,必须创建一个类的继承家族;其次,在不同层中定义同名虚函数;再次,用指向同一祖先类的指针或引用指向或引用不同层次类的对象,用这些指针或引用给对象发送同一消息(调用同名函数),即可实现多态行为。
10、文本文件和二进制文件存储信息的区别是什么?
答:
文本文件中保存字符的编码,二进制文件中保存数据的内存映像。
二、函数编写(10分)
写一函数,可以处理任意长度的一维整数数组,此函数将数组中的元素按原存放顺序相反的方向存放。
解:
intArrayReverse(int*array,intn)
{intl,r,temp;
for(l=0,r=n-1;l { temp=*(array+l); *(array+l)=*(array+r); *(array+r)=temp; } } 三、程序设计(10分) 写一程序,在屏幕上输出所有的水仙花数。 水仙花数即三位整数中各位数字的立方和等于整数本身的数。 #include usingnamespacestd; voidmain() { for(inti=1;i<=9;i++) for(intj=0;j<=9;j++) for(intk=0;k<=9;k++) if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) cout< cout< } 四、设计类(15分) 设计一个复数类,重载“+”、“*”、“<<”运算符。 写一简单程序,演示你的复数类,调用所有你实现的方法。 解: 程序源文件: Complex.h、Complex.cpp、TestComplex.cpp //Complex.h #ifndefCOMPLEX_H #defineCOMPLEX_H #include usingnamespacestd; classComplex { private: doublereal; doubleimag; public: Complex(){real=0,imag=0;} Complex(doubler,doublei){real=r,imag=i;}; ~Complex(){}; Complexoperator+(Complexc); Complexoperator*(Complexc); friendostream&operator<<(ostream&os,Complex&c); }; #endif //Complex.cpp #include“Complex.h” ComplexComplex: : operator+(Complexc) { Complextemp; temp.real=real+c.real; temp.imag=imag+c.imag; returntemp; } ComplexComplex: : operator*(Complexc) { returnComplex(real*c.real-imag*c.imag, real*c.imag+imag*c.real); } ostream&operator<<(ostream&os,Complex&c) { ..os<<'('< ..returnos; } //TestComplex.h #include“Complex.h” voidmain() { Complexa(1,2),b(1,-2),c,d; c=a+b; d=a*b; cout<<“a=”< cout<<“a+b=”< cout<<“a*b=”< } 五、综合(15分) 1、设计一个长度在声明时确定的整数向量类,至少实现其Copy构造函数、析构函数,重载赋值运算符、加法运算符、内积运算符、插入运算符。 2、写一程序,演示你的类,调用你的类中的所有方法。 解: (用模板类实现,可以处理整数),程序文件Vector.h、Vector.cpp、TestVector.cpp。 //Vector.h #include usingnamespacestd; template classVector { private: intm; int*p; public: Vector(intd) { m=d; p=Tint[m]; } Vector(constVector { m=v.m; p=newT[m]; for(intk=0;k } virtual~Vector() {delete[]p;} voidSetValue(T*v,intn) { for(intk=0;k } Vector { for(intk=0;k return*this; } friendVector friendToperator*(Vector friendostream&operator<<(ostream&os,Vector }; //Vector.cpp template Vector { Vector for(intk=0;k returntmp; } template Toperator*(Vector { Ttmp=0; for(intk=0;k returntmp; } template ostream&operator<<(ostream&os,Vector { cout<<“(“; for(intk=0;k cout<<“)”; } //TestVector.cpp #include“Vector.h” voidmain() { Vector intt[10],i; for(i=0;i<10;i++)t[i]=i; a.SetValue(t,10); for(i=0;i<10;i++)t[i]=i*i; b.SetValue(t,10); ..c=a+b; cout<<“a=”< cout<<“b=”<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学院 08092 C+ 试题 AB 08 答案