华侨大学C++试卷_第1页
华侨大学C++试卷_第2页
华侨大学C++试卷_第3页
华侨大学C++试卷_第4页
华侨大学C++试卷_第5页
已阅读5页,还剩7页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华侨大学面向对象程序设计(二)试卷B班级学号姓名成绩注意:请将所有答案写在答卷上!一、填空题(15分,每小题1分)1.如果用户自定义的函数在调用点之后再定义,则在调用点之前,必须用(1)对被调函数进行说明。2.函数的递归调用可以有直接递归调用和(2)递归调用。3.静态全局变量的作用域是(3)。4.若将某函数定义为静态型(static),则该函数只能被(4)所调用。5.main(intargc,char*argv[]))函数中的参数argv用于(5)。6.(6)提供了一种在程序内和程序之间组织和使用名称的技术。7.用“const类型标识符&引用名=目标变量名;”声明引用,此处const的含义是(7)。8.C++语言中,(8)定义一个结构体类型,该结构类型中包含指向自身结构类型的指针成员。(填“可以”或“不可以”)9.若有类型定义“typedefcharSTRING[80];STRINGs;”,则s的类型为(9)。10.类的对象可以直接访问类中的(10)成员。(private/protected/public)11.在定义类时,若没有为类提供析构函数,则编译系统会自动为该类创建一个默认的析构函数,其形式为(11)。12.拷贝构造函数的功能是实现对象值的拷贝,通过将一个同类对象的值拷贝给一个新对象,来完成对新对象的初始化。定义一个拷贝构造函数的方式是(12)。13.当希望一个类(如A)可以存取另一个类(如B)的私有成员时,可以将该类(A)声明为另一类(B)的友元类,友元类(A)的所有成员函数都可视为该类(B)的(13)函数。14.在静态成员函数的实现中不能直接引用类中说明的非静态成员,但可以引用类中说明的(14)成员。15.C++支持两种不同类型的多态:一种是编译时的多态,另一种是(15)时的多态。二、选择题(18分,每小题2分)1.进行文件操作时,需要包含(1)_文件。A)iostreamB)fstreamC)D)2.若有定义:enumWeekday{sun=7,mon=1,tue,wed,thu,fri,sat}day;,以下正确的语句是(2)。A)mon++;B)intk=mon+1;C)day=7;D)day++;3.若有定义:int(*p)(int,int);,则错误的叙述是(3)。A)p是一个指向返回值类型为int,带有两个int型参数的函数的指针B)该类型的变量p可以作为另外一个函数的参数C)若已定义了函数intSum(intx,inty),则p可以指向函数Sum。D)p可以作自增运算p++4.若已有定义:structStudent{char*name,intage,floatmark;}s[8];Student*p=s;,以下语句(组),正确的是(4)。A)cin>>s[0].name>>s[0].age>>s[0].mark;B)cin>>p->age>>p->mark;p->name="Liuhua";C)s[1].name=newchar[10];strcpy(p->name,"Liuhua");D)p->name=newchar[10];strcpy(p->name,"Liuhua");5.若有定义:inta,b;,下面引用变量的声明中,(5)是正确的。A)int&ra=a;int&&rra=ra;B)int&y=10;C)int&z=int;D)int&x=a;int&y=b;6.对于下面定义的类Myclass,在函数f中可以将对象obj的成员data值修改为50的语句是(6)。classMyclass{public:Myclass(intx){data=x;}voidSetNum(intvalue){data=value;}private:intdata;};voidf(void){Myclassobj(45),*ptr=&obj;(6)}A)=50;B)(50);C)ptr->SetNum(50);D)ptr->data=50;7.下面叙述正确的是(7)。A)基类的protected成员不能被派生类的成员函数访问B)基类的public成员能被派生类的对象直接访问C)基类的protected成员在派生类中可能是privated的D)基类的private成员不能被基类的成员函数访问8.构造函数不具备的特征的是(8)。A)构造函数的函数名与类名相同 B)构造函数可以重载C)构造函数必须有返回值类型 D)构造函数可以设置默认参数9.下面叙述错误的是(9)。A)基类指针可以指向派生类对象B)基类指针可以指向基类对象C)派生类指针可以指向派生类对象D)派生类指针可以指向基类对象三、阅读程序题(45分)1.阅读下面程序,给出程序的运行结果。(15分,每小题5分)1)#include<iostream>usingnamespacestd;voidFun(intx,int*py,int&z){x++;(*py)--;z*=2;cout<<"x="<<x<<","<<"*py="<<*py<<","<<"z="<<z<<endl;}voidmain(void){inta=1,b=2,c=3;Fun(a,&b,c);cout<<"a="<<a<<","<<"b="<<b<<","<<"c="<<c<<endl;}2)#include<iostream>usingnamespacestd;voidP(intw){if(w==0)return;P(w-1);cout<<w;P(w-1);}voidmain(void){P(3);}3)#include<iostream>usingnamespacestd;voidprint(int,int,int(*p_fun)(int,int));intadd(int,int);intsubstract(int,int);voidmain(void){inta=10,b=-20,Choice;int(*p)(int,int);cout<<"Enteryourchoice:";cin>>Choice;switch(Choice){case1:p=add;break;default:p=substract;}print(a,b,p);}intadd(intx,inty){ returnx+y;}intsubstract(intx,inty){returnx-y;}voidprint(inti,intj,int(*p_fun)(int,int)){cout<<"Theresultis"<<p_fun(i,j)<<endl;}程序运行时:EnteryourChoice:12.阅读下面程序,回答相关问题。(30分)1)(7分)#include<iostream>usingnamespacestd;structStudent{ intnum; charname[20]; charsex; intage;};voidmain(void){Student*Fun(Student*,int); Studentstu[]={{11,"lilin",'M',18},{3,"sunny",'M',24}, {2,"zhao",'M',20},{4,"Liuyanhong",'F',30}}; intsize=sizeof(stu)/sizeof(Student); Student*p=Fun(stu,size); cout<<p->num<<'\t'<<p->name<<'\t'<<p->age<<endl;}Student*Fun(Student*s,intn){um>s[index].num)index=i; returns+index; }(3分)给出函数Fun()的功能;(4分)若将函数Student*Fun(Student*s,intn)的返回值类型改为Student&,要完成相同的功能,给出源程序中其它需要修改的语句并作相应的修改。2)(6分)#include<iostream>usingnamespacestd;classStudent{char*name;intage;floatscore;public: Student(char*n,inta,floats):age(a),score(s){ cout<<"constructing..."<<n<<endl; name=newchar[strlen(n)+1]; strcpy(name,n); } ~Student(){ cout<<"destructing..."<<name<<endl;; delete[]name; }};voidmain(void){Students("Liu",18,;Student*p_st1=newStudent("Chen",18,;deletep_st1;<<endl; } ~Line(){ cout<<"Linedestructor."<<endl; }};Point::Point(Point&p){<<endl; } intgetBvalue(){returnBvalue;}};classD1:publicBase{public: intD1value; D1(intv,intb):Base(v){ D1value=b; cout<<"D1constructor."<<endl; } intgetD1value(){returnD1value;}};classD:publicD1{public: intDvalue; intgetDvalue(){returnDvalue;} D(intv1,intv2,inta):D1(v1,v2){ Dvalue=a; cout<<"Dconstructor."<<endl; }};voidmain(void){ Dobj(1,2,3); cout<<()<<endl;cout<<()<<endl;一个简单分数类的结构如下,请补充相应代码,使之完成程序功能。#include<>intgcd(intm,intn){<<endl;}FractionalNumber(constFractionalNumber&x){<<endl;}voidSimplify(void){读下面程序,给出程序的运行结果。(15分,每小题5分)1)运行结果:2)运行结果:3)运行结果:2.阅读下面程序,回答相关问题。(30分)1)(7分)a)(3分)函数Fun()的功能:b)(4分)需要修改:2)(6分)a)(4分)运行结果:b)(2分)3)(9分)a)(6分)运行结果:b)(3分)4)(8分)1)(6分)运行结果:2)四、编程题(22分)1.一个简单分数类的结构如下,请补充相应代码,使之完成程序功能。intgcd(intm,intn){符数组11.~类名{}12.类名(const类名&对象名){…}13.友元函数14.静态15.运行二、选择题(18分,每小题2分)(1)B(2)B(3)D(4)D(5)D(6)C(7)C(8)C(9)D三、阅读程序题(45分)1.阅读下面程序,给出程序的运行结果。(15分,每小题5分)1)2)12131213)2.阅读下面程序,回答相关问题。(30分)1)(7分)a)函数返回最大学号的学生指针;b)需要修改的地方:Student&Fun(Student*,int);一个简单分数类的结构如下,请补充相应代码,使之完成程序功能。intgcd(intm,intn){<<endl;}voidadd(constFractionalNumber&x){//分数的加法------5分 inta=,b=; intc=numerator,d=denominator; numerator=c*b+a*d; denominator=b*d;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论