《C考试题型.pdf》由会员分享,可在线阅读,更多相关《C考试题型.pdf(8页珍藏版)》请在金锄头文库上搜索。
1、考试内容:考试内容:1)C 语言语法语言语法2)C+面向对象方法面向对象方法3)函数、类程序编程)函数、类程序编程主要考察基础性、重点性知识,请结合课本、上课内容进行复习。主要考察基础性、重点性知识,请结合课本、上课内容进行复习。主要考试题型如下:主要考试题型如下:一一.选择题选择题1、 面向对象程序设计将数据与放在一起, 做为一个相互依存、 不可分割的整体来处理。A 对数据的操作B 信息C 数据隐藏D 数据抽象2、一个类的析构函数。A 唯一的B 允许重载C 至多可有两个D 只能是缺省的3、类型修饰符 unsigned 修饰类型是错误的。AcharB intC long intD float4
2、、若执行完以下语句,i 和 j 的值分别为。int i;int &j=i;i=5;j=i+1;A5,5B 5,6C 6,6D 6,55、对于语句 int *pa5;的描述,下列说法正确的是。Apa 是一个指向数组的指针,所指向的数组是 5 个 int 型元素;Bpa 是一个指向某数组中第 5 个元素的指针,该元素是 int 型变量;Cpa5表示某个数组的第 5 个元素;Dpa 是一个具有 5 个元素的指针数组,每个元素都是一个 int 型指针。6、假设整型数 i 的地址为 0x12345678,指针 ip 地址为 0x21850043,则执行以下语句后,k的值为。int i=100;int *
3、ip=&i;int k=*ip;A0x12345678B 0x21850043C 100D 不确定7、有如下定义:int a5,*p;p=a;则下列描述错误的是。A 表达式 p=p+1 合法的B 表达式 a=a+1 是合法的C 表达式 p-a 是合法的D 表达式 a+2 是合法的8、#include int a=3;void f(int);int main( )int a=5;f(a);cout a= aendl;return 0;void f(int b) b=4; a+=b; 程序的输出结果是A3B 5C 7D 99、执行下列程序段时,输出。int s1=0,s2=0,s3=0,s4=0;
4、for(int t=1;t=4;t+)switch(t)case 4:s1+;break;case 3:s2+;break;case 2:s3+;default: s4+;couts1”,”s2”,”s3”,”s4SetValue(5)与 my.SetValue(5)等价11、下列各类函数中,不是类的成员函数。A 构造函数B 析构函数C友元函数D 拷贝构造函数12、派生类的对象对它的基类成员中是可以访问的。A 公有继承的公有成员公有继承的公有成员B 公有继承的私有成员C 公有继承的保护成员D 私有继承的公有成员13、有关析构函数的说法不正确的是。A 析构函数有且只有一个B 析构函数无任何函数类
5、型C 析构函数和构造函数一样可以有形参D 析构函数的作用是在对象被撤销时收回先前分配的内存空间14、通常拷贝构造函数的参数是。A 某个对象名B 某个对象的成员名C 某个对象的引用名D 某个对象的指针名15、对于一个类的构造函数,其函数名与类名()。A. 完全相同完全相同B. 基本相同C. 不相同D. 无关系16、类的构造函数是在定义该类的一个 () 时被自动调用执行的。A. 成员函数B. 数据成员C. 对象D. 友元函数17、在下面的二维数组定义中,哪一个是正确的?()A. int a5;B. int a(10);C. int a;D. int a5=1,2,3,4,5;1818、下面的哪一个
6、函数头格式不正确?、下面的哪一个函数头格式不正确?( () )A.AA(int a, int b)B.AA(int a=0, int b)C.AA(int a=0, int b=0)D.AA(int a, int b=0)19、假定要对类 AB 定义加号操作符重载成员函数,实现两个 AB 类对象的加法,并返回相加结果,则该成员函数的声明语句为()。A.AB operator +(AB& a,AB& b);B.AB operator +(AB& a);C.operator +(AB a);D.AB& operator +();20、常指针 const int *p 说明不能修改() 。A、p 指
7、针B、p 指针指向的变量C、p 指针指向的数据类型D、上述 A、B、C 三者21、下面的哪一个保留字不能作为函数的返回类型?( )A. voidB. intC. newD. long22、假定 a 为一个数组名,则下面的哪一种表示有错误?()A. aiB. *+aC. *aD. *(a+1)23、设”int a=12;” ,则执行完语句”a+=a*a;”后,a 的值是( )。a=a+a*a=12+12*12=156A. 12B. 144C. 156D. 28824、下列函数中,不能重载的函数是()。A 成员函数B 非成员函数C 构造函数D 析构函数25、设 x 是一个 bool 型的逻辑量,y
8、 的值为 10,则表达式 x & y 的值为() 。A. 1B. 0C. 与 x 值相同D. 与 x 值相反26、设 person 是一个类,p1 是该类的一个对象,p2 是指向 p1 的指针,getname 是该类的一个成员函数,则以下不正确的表达是( ) 。A、person.getname( )B、p1.getname( )C、p1.person:getname( ) 这里 getname()和 person:getname()是等价的后者显式的写出了 getname()的域D、p2-getname( )27、下列关于派生类的描述中,错误的是()。A 派生类至少有一个基类B 一个派生类可以
9、作为另一个派生类的基类C 派生类的成员除了自身类的成员外,还包含了其基类的成员D 派生类的成员可以访问其基类中的所有成员28、如果是类 B 在类 A 的基础上构造,那么,就称() 。A. 类 A 为基类或父类,类 B 为超类或子类B. 类 A 为基类、父类或超类,类 B 为派生类或子类C. 类 A 为派生类,类 B 为基类D. 类 A 为派生类或子类,类 B 为基类、父类或超类29、 C+的继承性允许派生类继承基类的() 。A. 部分特性,并允许增加新的特性或重定义基类的特性B. 部分特性,但不允许增加新的特性或重定义基类的特性C. 所有特性,并允许增加新的特性或重定义基类的特性D. 所有特性
10、,但不允许增加新的特性或重定义基类的特性30、派生类的成员函数可以直接访问基类的()成员。A. 所有B. 公有和保护C. 保护和私有D. 私有31、对于公有继承,基类的公有和保护成员在派生类中将()成员。A. 全部变成公有B. 全部变成保护C. 全部变成私有D. 仍然相应保持为公有和保护32、对于公有继承,基类中的私有成员在派生类中将 ()。A. 能够直接使用成员名访问B. 能够通过成员运算符访问C. 仍然是基类的私有成员D. 变为派生类的私有成员33、 当保护继承时,基类的()在派生类中成为保护成员,在类作用域外不能够通过派生类的对象来直接访问该成员。A. 任何成员B.公有成员和保护成员C.
11、 保护成员和私有成员D.私有成员34、 在定义一个派生类时, 若不使用保留字显式地规定采用何种继承方式, 则默认为 ()方式。A. 私有继承B. 非私有继承C. 保护继承D. 公有继承35、 建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为()的构造函数。A. 自己所属类、对象成员所属类、基类B. 对象成员所属类、基类、自己所属类C. 基类、对象成员所属类、自己所属类D. 基类、自己所属类、对象成员所属类36、 当派生类中有和基类一样名字的成员时,一般来说, () 。A. 将产生二义性B. 派生类的同名成员将覆盖基类的成员C. 是不能允许的D. 基类的同名成员将覆盖派生类的
12、成员公式 1在定义派生类时,C+里是允许派生类中的成员名和基类中的成员名相同,出现这种情况,我们称派生类成员覆盖了基类中使用相同名称的成员。 也就是说当你在派生类中或用对象访问该同名成员时,你所访问只是派生类中的成员,基类中的就自动被忽略。但如果我确实要访问到基类中的同名成员那怎么办, C+中这样规定必须在成员名前加上基类名和作用域标识符:。37、下列对派生类的描述中错误的说法是: () 。A. 派生类至少有一个基类B. 派生类可作为另一个派生类的基类C. 派生类除了包含它直接定义的成员外,还包含其基类的成员D. 派生类所继承的基类成员的访问权限保持不变38、 派生类的对象对其基类中()可直接
13、访问。A. 公有继承的公有成员B. 公有继承的私有成员C. 公有继承的保护成员D. 私有继承的公有成员39、设置虚基类的目的是() 。A、简化程序B、消除二义性C、提高运行效率D、减少目标代码40、一个类的构造函数通常被定义为该类的 () 成员。A. 公用B. 保护C. 私有D. 友元二、填空题二、填空题1、 数学式子 x2+y2写成 C+语言表达式是。2、如果 a=1,b=2,c=3,则条件表达式 ab?a:c 的值为。3、C+使用 cin 和 cout 进行输入输出操作的程序必须包含头文件4、用 C+表达式描述命题“a 与 b 中有一个小于 c” :。5、定义内联函数所用的关键字,定义友元
14、所用的关键字为。6、执行常量定义语句 const int size=100*sizeof(int);后,符号常量 size 的值为。7、设 m=1,n=2, 则表达式 m+= =n 和+m= =n 的值分别为和。8、 任何类中允许有、三种访问限制类型, 数据和成员函数的默认类型为。9、若 Queue 是一个类,aQueue 是它的一个对象,而且该类中定义了一个静态成员函数show(则在类外对该成员的函数进行调用的方式可以为和。三、阅读程序,写出三、阅读程序,写出 main 程序运行输出结果。程序运行输出结果。1、 #include using namespace std;void splitf
15、loat(float x, int *p1, float *p2)*p1=(int)x;*p2=x-*p1;int main()intn;float x ,f;cinx;splitfloat(x,&n,&f);cout”n=”n”,”f=”fendl;return 0;主程序输入使 x=3.1415,程序出结果为。2、#include using namespace std;classAprivate:int a;public:A(int i) a=i;cout constructing class A endl; void print() cout a endl; A() cout dest
16、ructing classA endl; ;class B1:public Aprivate:int bl;public:B1(int i,int j):A(i) bl=j;cout constructing class B1 endl; void print() A:print (); cout bl endl; B1() cout destructing class B1 endl; ;class B2:public Aprivate:int b2;public:B2(int i,int j):A(i) b2=j;cout constructing class B2 endl; void
17、print() A:print (); cout b2 endl; B2() cout destructing class B2 endl; ;class C:public B1,public B2private:int c;public:C(int i,int j,int k, int l,int m):B1(i,j),B2(k,l),c(m) cout constructing class C endl; void print() B1:print(); B2:print(); cout c endl; C( ) cout destructing class C endl; ;int ma
18、in()C c1(1,2,3,4,5);c1.print();return 0;程序的输出结果为。3、#include using namespace std;class Basepublic:virtual voiddisplay() cout“Im Baseendl;class S1: public Base/公有派生 public:void display()cout“Im S1endl;class D1: public Base/公有派生 public:void display() cout“Im D1 display();p=&s1;p- display();p=&d1;p- dis
19、play();return 0;程序的输出结果为。如果把 class Base 中 virtual voiddisplay() 改为 voiddisplay() ,则程序的输出结果为。四、程序综合题四、程序综合题1、有一个 16 位的整数,每 4 位为一个数,写函数求他们的和。 解释:某整数的二进制 16 位形式: 1101010110110111它四部分的和:1101+0101+1011+0111提示:用十进制做参数,计算时按二进制考虑,通过位运算的方法求出各部分的值。2.请编写一个函数 int find(char s,char t),该函数在字符串 s 中查找字符串 t,如果找到,则返回字
20、符串 t 在字符串 s 中的位置(整数值) ;否则返回-1.注意:用数组方式及两重循环来实现该函数. 注意: 部分源文件程序已存在文件 PROC2.CPP 中. 请勿修改主函数 main 和其他函数中的任何内容,仅在函数 find 的花括号中实现上述 find 函数功能。文件 PROC2.CPP 的内容如下:#include#include #include using namespace std;int find(char s,char t);const int MAXLINE =256;int main()char sourceMAXLINE,targetMAXLINE;cout Plea
21、se input a string for searching:n;cin.getline(source,MAXLINE);cout=0)coutFinding it.The target string is at index intpos of stringendl;elsecoutNot finding it.n;return 0;int find(char s,char t)2、建立一个建立一个 ARRAYARRAY 类,求一维数组中各元素的最大值、最小值和平均值。要类,求一维数组中各元素的最大值、最小值和平均值。要求如下:求如下:(1 1)私有成员:私有成员:intint data10
22、data10:数组名称:数组名称intint maxmax:元素的最大值:元素的最大值intint minmin:元素的最小值:元素的最小值floatfloat averageaverage:各元素的平均值:各元素的平均值(2 2)公有成员:公有成员:构造函数构造函数 ARRAY(intARRAY(int a10)a10):初始化成员数组:初始化成员数组voidvoid process()process():求:求 datadata 数组中的最大值、最小值和平均值数组中的最大值、最小值和平均值voidvoid print()print():输出数组中元素的最大值、最小值和平均值:输出数组中元素
23、的最大值、最小值和平均值(3 3)在主程序中进行该类的测试。在主程序中进行该类的测试。2、设计一个类 A, 借助借助类的静态类的静态数据数据成员成员的方法,可实现对的方法,可实现对已创建的已创建的 A A 类的实类的实例例(对象对象)的的计数计数。要求要求:类的结构清晰类的结构清晰,有构造函数和类对象计数值输出函有构造函数和类对象计数值输出函数数GetObjectCount()、成员的访问限制规定好。、成员的访问限制规定好。MMainain 调用如下所示:调用如下所示:int main()A*pA=new A3;coutpA.GetObjectCount()endl;delete pA;coutA:GetObjectCount()endl;return 0;/请编写设计类 AClassAprivate:public:;