C++试卷及答案_第1页
C++试卷及答案_第2页
C++试卷及答案_第3页
C++试卷及答案_第4页
C++试卷及答案_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上 C+程序设计 (A)一、选择题(每小题2分,共20分)1、关于对象概念的描述中,( )是错误的。 A. 对象就是C语言中的结构变量B. 对象代表着正在创建的系统中的一个实体C. 对象是一个状态和操作(或方法)的封装体D. 对象之间的信息传递是通过消息进行的 2、对于int *pa5;的描述,()是正确的。 A. pa是一个指向数组的指针,所指向的数组是5个int型元素B. pa是一个指向某个数组中第5个元素的指针,该元素是int型变量C. pa5表示某个数组的第5个元素的值D. pa是一个具有5个元素的指针数组,每个元素是一个int型指针3、下列for循环的循环体执

2、行次数为( )。 for(int i=0,j=10;i=j=4;i+,j- -) A. 0 B. 无限 C. 4 D. 14、下述静态数据成员的特征中,( )是错误的。 A. 说明静态数据成员时前边要加修饰符staticB. 静态数据成员要在类体外进行初始化C. 引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符D. 静态数据成员不是所有对象所共用的5、( )是析构函数的特征。 A. 一个类中只能定义一个析构函数 B. 析构函数与类名不同C. 析构函数的定义只能在类体内 D. 析构函数可以有各个或多个参数。6、已知:p是一个指向类A数据成员m的指针,A1是类A的一个对

3、象,如果要给m赋值为5,下列表达式( )是正确的。 A. A1.p=5 B. A1->p=5C. A1.*p=5 D. *A1.p=57、关于new运算符的下列描述中,( )是错误的。 A. 它可以用来动态创建对象和对象数组B. 使用它创建的对象或对象数组可以使用运算符delete删除C. 使用它创建对象时要调用构造函数D. 使用它创建对象数组时必须指定初始值 8、派生类的对象对它的基类成员中( )是可以访问的。 A. 公有继承的公有成员B. 公有继承的私有成员C. 公有继承的保护成员D. 私有继承的公有成员9、下列( )是引用调用。 A形参是指针,实参是地址值 B形参和实参都是变量C形

4、参是引用,实参是变量 D形参是变量,实参是引用10、下述关于开关语句的描述中,( )是正确的。A开关语句中default子句可以没有,也可以有一个;B开关语句中每个语句序列中必须有break语句;C开关语句中default子句只能放在最后;D开关语句中case子句后面的表达式可以是整形表达式。二、填空题(共60分)(一)、基本概念题(每题2分,共10分)1、_(1)_类型转换专门针对有虚函数的继承结构,它将基类指针转换成其派生类指针,以做好派生类操作的准备。2、函数重载是指函数的_(2)_不同。3、设有说明语句:int a 4=1,2, 2,3,4,5, *p=(int *)a; 则*(p+5

5、)的值为_(3)_。4、设有宏定义和变量说明:#define T(x,y) x+y int a= T(3,4) * T(3,5);则变量a的初值为_(4)_。5、编程质量的衡量标准包括可读性、易编程性、安全性、可扩充性、效率和_(5)_。(二)、完善程序题(每空2分,共20分)1、单链表中结点按元素值递增链接,DeleteAb实现删除结点值在a至b之间的结点(ab)的功能。 #include<iostream.h>struct node int x; node *link; node *DeleteAb(int a,int b,node *first) node *p=first;

6、 node *q=_(6)_; while( p && p->x<b ) if (_(7)_) q=p; p=p->link; else if(q=first) q=_(8)_; p=first=q; else q->link=_(9)_; p=q->link; return _(10)_; void main( ) node a10= 1,2,3,4,5,6,7,8,9,10 ,*hd=a,*p; int x,y; for( int i=0;i<9;i+ ) ai.link=&ai+1; a9.link=NULL; p=Delete

7、Ab(x,y,hd); while(p) cout<<p->x; p=p->link; 2、程序构造了一个集合类,其中以整形数组存放集合中的元素。通过重载运算符“*”,实现求两个集合交集的运算,即两个集合的共有元素。例如,设集合a,b分别为:集合a=1,2,3,4,15,6,7,8,9,10;集合b=1,2,3,4,5,16,17,18,19,20;求交集a*b的结果为1,2,3,4。通过重载运算符“=”,实现两个集合的赋值运算。#include<iostream.h> #include“string.h” class set int x10; int le

8、n; public: set( ) for(int i=0;i<10;i+) xi=0; len=0; set(int *p, int n) for (int i=0;i<n;i+) xi=*p+; len=n; friend set operator*(set a,set b); set & operator=(set b); int getLen( ) return len; void show(int n) for(int i=0;i<n;i+) cout<<xi<<t; ; set operator* (set a,set b) set

9、 t; int k=0; for (int i=0;i<a.len;i+) for (int j=0;j<b.len;j+) if (a.xi=b.xj) _(11)_=a.xi; break; _(12)_=k; return t; set & _(13)_(set b) for (int i=0;i<b.len;i+) xi=b.xi; len=b.len; _(14)_; void main( ) int a10= 1,2,3,4,5,6,7,8; int b10=1,12,3,5,8,6,7,14,29; set set1(a,8),set2(b,9),c;

10、c=set1*set2; c.show(_(15)_); (三)、阅读程序题(每题5分,共30分)1、以下程序的执行结果是_(16)_ 。#include <iostream.h>void main() int x=3,y=3; switch(x%2) case 1: switch (y) case 0: cout<<"firstt" case 1: cout<<"secondt" break; default: cout<<"hellowt" case 2: cout<<&

11、quot;thirdn" 2、 以下程序的执行结果是_(17)_ 。 #include<iostream.h>int add(int x, int y=8); void main() int a=5; cout<<add(a)<<"," cout<<add(a,add(a)<<"," cout<<add(a,add(a,add(a)<<endl; int add(int a,int b) int s=a+b; return s; 3、以下程序的执行结果是_(18

12、)_ 。#include<iostream.h>void f(int &a,int b=3) static int i=2; a=a*b+i; i+=a; void main(void) int x=3,y=2; f(x,y); cout<<x<<endl; f(x); cout<<x<<endl; 4、以下程序的执行结果是_(19)_ 。#include <iostream>using namespace std;class AA int A,B; public: AA(int i,int j) A=i; B=j

13、; cout<<"Constructorn" AA(AA &obj) A=obj.A+10; B=obj.B+20; cout<<"Copy_Constructorn" AA() cout<<"Destructorn" void print() cout<<"A="<<A<<",B="<<B<<endl; ;void main() AA a1(2,3); AA a2(a1); a2.print

14、(); AA *pa=new AA(5,6); pa->print(); delete pa; 5、以下程序的执行结果是_(20)_ 。#include <iostream> using namespace std; class Base protected: int x;public: Base(int a)x=a;class A:public Base public: A(int a):Base(a) int GetX() return x;class B:public Base public:B(int a):Base(a) int GetX() return x;cl

15、ass C:public B,public A public:C(int a):A(a+10),B(a+20) ;void main() C c(10); cout<<c.A:GetX()<<','<<c.B:GetX()<<endl;6、以下程序的执行结果是_(21)_ 。#include<iostream>using namespace std; class A int x,n;int mul;public: A(int a,int b) x=a;n=b;mul=1; virtual int power( ) mu

16、l=1; for(int i=1;i<=n;i+) mul*=x; return mul; void show(void) cout<<mul<<'t' ; class B:public A int y,m; int p; public: B(int i,int j,int k,int h):A(i,j) y=k;m=h;p=10; int power( ) p=1; for(int i=1;i<=m;i+) p*=y; return p; void show(void) A:show(); cout<<p<<'

17、;n' ; void fun(A *f) cout<<f->power()<<'n' void main() A a(5,3); B b(2,4,3,3); fun(&a); fun(&b); b.show(); 三、编程题(每题10分,共20分)123577911237892428641121、有一个文件abc.in,其中含有一些整数对,求出这些整数对的最大公约数,并对这些最大公约数从小到大排序输出。要求使用向量存放数据,程序分为输入、排序、输出三个函数完成,其样板文件内容如下:abc.in2、定义一个处理日期的类TDat

18、e,它有3个私有数据成员:Month,Day,Year和若干个公有成员函数,并实现如下要求:构造函数重载;成员函数设置缺省参数;定义一个友元函数来打印日期;定义一个非静态成员函数设置日期;可使用不同的构造函数来创建不同的对象。一、 单选题(每题1分,共15分)C C B D D C A A D C B A B C D二、 基本概念填空题(每空1分,共15分)1、传地址引用2、-23、04、inline5、026、26 147、整型字符型8、ABC9、210、1611、3三、阅读程序题(每题4分,共20分)1、a2、2 53、34、12 285、2 4 7 11 16四、完善程序题(每空2分,共

19、20分)1、(1)int y ,int n(2)yi(3)yj=0(4)count%10=02、(5)0(6)n+(7)03、(8)p=0(9)p=i(10)sizeof(int)五、改错题(10分)/11 while (p->Next!=NULLl)/14 s=p;/15 while (q)/17 if(q->Data=p->Data)/19 s->Next=q->Next;六、程序设计题(20分)1、(10分)#include<iostream.h>struct scorechar name20;long num;double cpp;double

20、 english;double math;double ave;void compute(score x,int n)for(int i=0;i<n;i+)xi.ave=(xi.cpp+xi.english+xi.math)/3;void input(score x,int n)for(int i=0;i<n;i+)cout<<"输入第"<<i+1<<"个学生的姓名: "cin.ignore(1);cin.getline(,20);cout<<"输入第"<

21、<i+1<<"个学生的学号: "cin>>xi.num;cout<<"输入第"<<i+1<<"个学生的C成绩: "cin>>xi.cpp;cout<<"输入第"<<i+1<<"个学生的英语成绩: "cin>>xi.english;cout<<"输入第"<<i+1<<"个学生的数学成绩: "cin&

22、gt;>xi.math;void output(score x,int n)for(int i=0;i<n;i+)cout<<"第"<<i+1<<"个学生的姓名: "<<<<endl;cout<<"第"<<i+1<<"个学生的学号: "<<xi.num<<endl;cout<<"第"<<i+1<<"个学生的C成绩: "<<xi.cpp<<endl;cout<<"第"<<i+1<<"个学生的英语成绩: &q

温馨提示

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

评论

0/150

提交评论