2010-2011 学年 第 二 学期末考试试题(A卷)
课程名称 大学计算机基础
使用班级:10010241,10010242,10010441,10010141, 10010142 ,10010442,10010342,10010341, 10020742,
10010742,10010741,10010743,10010642,10010641,10020241,10020141, 10020143, 10020142,10020442,
10020441,10020741,10020341,10020342,10020343,10030141,10030142, 10030441, 10030342,10030341, 10030442, 10050542,10050541,10050941,10050642,10050641,10050942, 10050742,10050741,10090341,
10040241,10040243,10040242,10070341,10070442,10070441,10070542 ,10070541,10060141,10070642, 10070641,10090341,10020641,10030242,10030241,10机电实验
总分
得分
3 4 5 6 7 8 9 10 11 12 13 14 15 一、 选择题(每题2分,共30分)【注:将答案填在下面的表中,否则不计成绩】 题号 答案 1 2 1. 下面有关结构化程序设计和面向对象程序设计的概念描述中,错误的是__________。 A.结构化程序设计是以函数为基本单位的模块化程序设计方法
B.面向对象程序设计是以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术 C.面向对象程序设计是以功能为中心描述系统的,重点强调的是解决问题整个过程的描述
D.结构化程序设计采用“自顶向下,逐步求精”的程序设计方法和“单入口、单出口”的控制结构 2. 下面不是面向对象技术的三大基本特性之一的是_____。 A.封装性
B.抽象性
C.继承性
D.多态性
3. 下面有关构造函数的描述中错误的是______。
A. 构造函数是函数名与类名相同的类的成员函数 B. 一个类中可以有多个构造函数 C. 构造函数可以设置缺省形参值 D. 构造函数和其它函数一样必须指明函数类型 4. 关于成员函数,以下叙述中不正确的是______ 。 A. 成员函数一定是内联函数
B. 成员函数可以重载
D. 成员函数可以是另一个类的友元函数
C. 成员函数的参数可以设置默认值
5. 下列关于析构函数说法正确的是_______。 A. 析构函数和构造函数的功能是相反的
B. 析构函数和构造函数都是可以重载的
C. 析构函数和其它成员函数一样会被该类的派生类继承。 D. 对象被析构的顺序与其创建的顺序是相同的 6. 下面对静态成员的描述中,错误的是_____。
A. 静态成员的提出是为了解决数据共享问题 B. 静态数据成员的初始化在类体外进行
第 1 页 共 7 页
C. 类的不同对象有不同的静态数据成员值
D. 静态成员函数可以直接访问类中的静态数据成员 7. 有关多态的概念下面说法错误的是_______。
A.函数的重载是C++中多态性的一种体现,其中操作对象的确定是通过动态关联来实现的 B.运算符重载实质上还是函数的重载,也是多态的体现
C.通过虚函数来实现多态时,操作对象的确定是通过动态关联来完成的。 D.多态性指的是:同样的消息被不同类型的对象接受会导致完全不同的行为。 8. 设置虚基类的目的是_______。
A.简化程序 B.消除二义性 C.提高运行效率 D.实现多态 9. 关于继承、派生类的访问方式下列说法正确的是_____ 。 A.以公有方式继承,派生类对象对基类成员均可访问。
B.以保护方式继承,派生类的成员函数可访问基类中的公有成员和保护成员。 C.以私有方式继承,派生类对象除基类公有成员其他成员都不能访问。 D.以上说法都不对。
10. 下列对常量的定义中,错误的是_____ 。
A.int const size=10; C.void const print();
B.char * const p=\D.const MyClass obj(10,10);
11. 若有如下函数声明:void Fun(int x);,则下列_____能与该函数进行重载。
A. void Fun(int y); C. int Fun(int x);
B. void Fun(int x,int y='1'); D. void Fun(int) const;
12. 下列运算符中,不能重载的运算符是_____ 。
A. :: B. [ ] 13. 关于抽象类的描述中,错误的是_____ 。
A.可以说明指向抽象类的指针 C.可以说明抽象类的引用
B.不可以建立抽象类对象
D.指向抽象类的指针不能指向其派生类对象 C.&& D. >>
14. 下列关于运算符重载的描述中,正确的是_____ 。
A. 运算符重载可以改变优先级 C. 运算符重载可以改变结合性
B. 运算符重载可以改变操作数的个数 D. 运算符重载不可以改变其原有的语法结构
15. 有关常数据的描述中,不正确的是_____ 。
A.常数据指的是用关键字const修饰的数据,使用常数据是为了对共享数据进行保护 B.常成员函数可以使用该类中的所有数据成员,但不能修改数据成员的值
第 2 页 共 7 页
C. 指向常对象的指针不能指向非常对象
D. 常数据成员的值是不可修改的,它的初始化只能利用构造函数的初始化表来实现 得分
二、程序填空(每空2分,共20分)
1、下面是一个函数重载的应用,请将程序补充完整。
#include
int cmp(______________________) { if(x>=y) if( x>y) return 1; else return 0; else return -1; }
int cmp(________________________) { int i=0, flag=0;
while(str1[i]!='\\0'&&str1[i]==str2[i]) i++; if(str1[i]-str2[i]>=0) if(str1[i]-str2[i]>0) return 1; else return 0; else return -1;
} void main()
{ int a,b; char s1[30],s2[30]; cin>>a>>b; cin>>s1>>s2;
if(cmp(a,b)= =0) cout<< \两个整数相等!\ else cout<< \两个整数不相等!\
if(cmp(s1,s2)= =0) cout<< \两个字符串相等!\ else cout<< \两个字符串不相等!\}
2、下面程序中类Column是类Triangle的公有派生类。请将下面程序补充完整。
#include
float a,b,c, area; public: ___________________________{a=x; b=y; c=z;} void Area( ) {float t; t=(a+b+c)/2; area=sqrt(t*(t-a)*(t-b)*(t-c)); }
float Get_area( ) { return area ; }
void Show( ) { cout<< \三角形的面积为:\
};
class Column :______________ { private : float H, volume ; public : Column(float x,float y,float z,float h) :_________________ {H=h ;}
第 3 页 共 7 页
void Volume( ) { Triangle :: Area( ); volume= Triangle :: Get_area()*H ; } void Show( ) {cout<< \三棱柱的体积为:\
} ;
void main( )
{ Triangle T1(3,4,5); T1.Area( ) ; T1.Show( ) ;
Column C1(3,4,5,10) ; C1.Volume( ) ; C1.Show( ) ; }
3、重载“+”、“-”运算符使之能实现两个复数的加减运算,请将程序补充完整。
#include
{ public: complex(double real=0,double imag=0); complex operator +(const complex& c); void print() const; private: double real,imag; };
complex::complex(double real, double imag ) { ____________________________;
____________________________; }
complex complex::operator + (const complex& c)
{ double r=real+c.real; double i=imag+c.imag; return complex(r,i); complex operator -( const complex& c1, const complex& c2) { ____________________________;
____________________________; return complex(r,i); }
void complex::print() const
{ cout<<'('< { complex c , c1(2.5,3.7), c2(4.2,6.5); c=c1-c2; c.print(); c=c1+c2; c.print(); } 得分 三、程序阅读(每题6分,共30分)【将程序运行的结果写在题目旁边的空白处】1、 #include class M { public: M(int a) { A=a; B+=a; } static void f1(M m); private: int A; static int B; }; void M::f1(M m){ cout<<\cout<<\ int M::B=0; 第 4 页 共 7 页 } void main() { M P(2), Q(4); M::f1(P); M::f1(Q); } 2、 #include class Point { public: Point(int i=0,int j=0) {x0=i;y0=j;} virtual void Draw()=0; protected: int x0, y0; }; class Line: public Point { public: Line(int i=0,int j=0,int m=0,int n=0):Point(i,j) {x1=m;y1=n;} void Draw( ) {cout<<\ protected: int x1,y1; }; class Ellipse: public Point { public: Ellipse(int i=0,int j=0,int p=0,int q=0):Point(i,j) {x2=p;y2=q;} void Draw() { cout<<\protected: int x2,y2; }; void DrawObj(Point* p) { p->Draw(); } void main( ) { Line *lineobj=new Line; Ellipse *ellipseobj=new Ellipse; cout< DrawObj(lineobj); DrawObj(ellipseobj); } 3、 #include class A { public: A(int h,int w):he(h),we(w){} ~A() { cout< class B: public A { public: B(int h,int w,int h1,int w1,int l):A(h,w),obj1(h1,w1){len=l;} ~B(){cout< private: A obj1; int len; }; void main() { B obj(1,3,5,7,9); } 4、#include Point ( ){ xVal=0 ;yVal=0 ;cout<<\类Point的构造函数1\ } Point(int xVal,int yVal){ this->xVal =xVal ; this->yVal =yVal ; cout<<\构造函数2\Point(Point &p){ xVal=p.xVal; yVal=p.yVal; cout<<\类Point的复制构造函数\ 第 5 页 共 7 页 搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新综合文库大学计算机基础试卷(A)全文阅读和word下载服务。
相关推荐: