收藏 分销(赏)

2023年计算机专业面向对象程序设计试.doc

上传人:丰**** 文档编号:9656321 上传时间:2025-04-02 格式:DOC 页数:17 大小:32.54KB 下载积分:8 金币
下载 相关 举报
2023年计算机专业面向对象程序设计试.doc_第1页
第1页 / 共17页
2023年计算机专业面向对象程序设计试.doc_第2页
第2页 / 共17页


点击查看更多>>
资源描述
计算机专业 面向对象程序设计 试题 一、单项选择题(每小题1分,共20分) 1.C++源程序文献的缺省扩展名为( A )。 A.cpp   B.exe     C.obj     D.lik 2.x>0||y==5的相反表达式为( B )。 A. x<=0 || y!=5              B.x<=0 && y!=5 C. x>0 || y!=5               D.x>0 && y==5 3.在下面的字符数组定义中,( D )的语法错误。 A.char a[20]=”abcdefg”;         B.char a[]=”x+y=55.”; C.char a[15];                      D.char a[10]=’5’; 4.以下对的的函数原型语句是( A )。 A.double fun(int x,int y);    B.double fun(int x;int y); C.double fun(int x=5,int y);  D.double fun(int x,y); 5.软件产品可被所有或部分重用于新的应用的能力叫做软件的( B )。 A.可维护性           B.可复用性 C.兼容性             D.对的性; 6.在多文献结构的程序中,通常把具有main()函数的文献称为( A )。 A.主文献      B. 实现文献     C.程序文献      D.头文献 7.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表达,包含的指针域用next表达,链队的队首指针用elemHead表达,队尾指针用elemTail表达,若链队为空,则进行插入时必须把新的地址赋给( C )。 A.elemHead             B.elemTail C.elemHead和elemTail  D. elemHead或elemTail 8.假定AB为一个类,则执行“AB a,b(2),c[3],*p=&a;”语句时共调用该类无参构造函数的次数为( 4 )次。 A.5          B.6          C.3       D.4 9.引入友元的重要目的是为了( C )。 A. 增强数据的安全性        B. 提高程序的可靠性 C. 提高程序的效率的灵活性  D. 保证类的封装性 10.假定类B是在类A的基础上扩充而得到的,那么就称( B )。 A. 类A为基类或父类,类B为超类或子类 B. 类A为基类、父类或超类,类B为派生类或子类 C. 类A为派生类,类B为基类 D. 类A为派生类或子类,类B为基类、父类或超类 二、填空题(每空2分,共20分) 1.由函数原型语句“int fun1(void);”可知,该函数的返回类型为整型,该函数带有 0 个参数。 2.假定x是一个逻辑量,则x||false的值与x的值  相同  。 3.作为语句桔标号使用的C++保存字case和default只能用于 switch  语句的定义体中。 4.对一个二维字符数组a进行初始化的数据表为{“123”,”456”,”789”},则a[1]元素相应的字符串为 456 。 5.NULL是一个符号常量,通常作为空指针值,它的具体值为 ‘\0’。 6.内联函数的定义模块与所属的 类 模块必须放在同一个文献中。 7.一个类的 构造函数 实现对该类对象进行初始化的功能。 8.假定为类AB定义了一个构造函数“AB(int aa=0):a(aa){ }”,则定义该类的对象时,可以有 2种不同的定义格式。 9.重载抽取运算符>>时,其运算符函数的返回值类型应当是 istream & 。 10.若多个基类及其派生类中都定义了同名的函数成员,要访问一个类中该成员函数时,就需要在函数名前加上 类名 和 类区分符:: 。 三、程序填充题,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序后面的标号处。(每小题5分,共20分) 1.下面程序算出的值。 #include<iostream.h> void main() {    double x,p1=1,p2=1,s=0;    int i,j=1;    cout<<"输入x的值:";    cin>>x;    for(i=1; ⑴ ;i++){       p1*=x;       p2*= ⑵ ;       s+=j*p1/p2;       j= ⑶ ;    }    cout<<s<<endl; } ⑴i<=10 ⑵i ⑶-j 2.假定结点类型的定义为“struct NODE{int data;NODE *next;};”,下面算法是依次输出以L为表头指针的单链表中各结点的值。 void ff(NODE *L) {    for( ⑴ ;p!=NULL; ⑵ )       cout<< ⑶ <<' ';    cout<<endl; } ⑴NODE *p=L ⑵p=p->next ⑶p->data 3.一个带类的程序如下: class A{    int a,b; public:    A(int aa=0,int bb=0): ⑴ { }//分别用bb和bb初始化a和b }; void main(){     ⑵ ;//定义类A的对象x并用5初始化,定义y并用x初始化     ⑶ ;//定义p指针,指向对象x } ⑴a(aa),b(bb) ⑵A x(5),y(x) ⑶A *p=&x   4. 一个带类的程序如下: class A{    int a,b; public:         ⑴     //定义构造函数,使参数aa和bb的默认值为0,                //在函数体中用aa初始化a,用bb初始化b }; void main(){    A *p1,*p2;       ⑵   ;//调用无参构造函数生成由p1指向的动态对象       ⑶   ;// 调用带参构造函数生成由p2指向的动态对象,             //使a和b成员分别被初始化为4和5 } ⑴A(int aa=0,int bb=0){a=aa;b=bb;} ⑵p1=new A ⑶p2=new A(4,5) 四、理解问答题,写出前三小题的程序运营结果和指出后两小题的程序(或函数)所能实现的功能。(每小题6分,共30分) 1. #include<iomanip.h> const int M=20; void main() {    int c2,c3,c5;    c2=c3=c5=0;    for(int i=1;i<M;i++){       if(i%2==0)c2++;       if(i%3==0)c3++;       if(i%5==0)c5++;    }    cout<<c2<<' '<<c3<<' '<<c5<<endl; }     运营结果:9 6 3 2. #include<iostream.h> #include<string.h> class CD{    char * a;    int b; public:    void Init(char *aa,int bb)    {       a=new char[strlen(aa)+1];       strcpy(a,aa);       b=bb;    }    char * Geta(){return a;}    int Getb(){return b;}    void Output(){cout<<a<<' '<<b<<endl;} }; void main() {    CD dx,dy;    dx.Init("abcdef",30);    dy.Init("shenyafen",3*dx.Getb()+5);    dx.Output();    dy.Output(); } 运营结果:abcdef 30           Shenyafen 95 3. #include<iostream.h> class Base { public:    Base(int i,int j){x0=i;y0=j;}    void Move(int x,int y){x0+=x;y0+=y;}    void Show(){cout<<"Base("<<x0<<","<<y0<<")"<<endl;} private:[w1]     int x0,y0; }; class Derived:public Base { public:    Derived(int i,int j,int m,int n):Base(i,j){x=m,y=n;}    void Show(){cout<<"NEXT("<<x+x0<<","<<y+y0<<")"<<endl;} private:    int x,y; }; void main() {    Base b(1,2);    b.Show();    Derived d(3,4,10,15);    d.Move(5,6);    d.Show(); } 运营结果:Base(1,2)         NEXT(18,25) 4. #include<iostream.h> void main() {    int i,s=0;    int N;    cout<<"输入一个整数:";    cin>>N;    for(i=1;i<=N;i++)s+=i*i;    cout<<s<<endl; } 程序功能:由键盘输入一个正整数N,计算并输出从1到N的各整数平方之和。 5. int f(const char *s) {    int i=0;    while(*s++)i++;    return i; } 程序功能:记录字符串中所包含的字符个数。 五、编程题(每小题5分,共10分) 1. 根据下面函数原型编写一个函数,求出并返回由字符指针s所指向的字符串中包含的字符’a’和’A’的总个数。 int void[w2]  fun(char *a); int  fun( char *a) {    int i=0;    for(;*a;*a++)if(*a=='a'||*a=='A')i++;    return i; }或 int  fun( char *a) {    int i=0;    do{if(*a=='a'||*a=='A')i++;}while(*a++);    return i; } 2. 根据下面类中拷贝构造函数的原型写出它的类外定义。 #include<iostream.h> class Array{    int *a;//指向动态分派的整型数组空间    int n; //数组长度 public:    Array(int aa[],int nn){  //构造函数       n=nn;       a=new int [n];       for(int i=0;i<n;i++)a[i]=aa[i];    }    Array(Array&bb);        //拷贝构造函数    Array& Give(Array& cc); //实现cc赋值给*thia的功能并返回*this    int Lenth(){return n;}  //返回数组长度 };   Array::Array(Array& bb) {       n=bb.n;    a=new int [n];    for(int i=0;i<n;i++)a[i]=bb.a[i]; }  
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服