C试题及答案.pdf_第1页
C试题及答案.pdf_第2页
C试题及答案.pdf_第3页
C试题及答案.pdf_第4页
C试题及答案.pdf_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

12017-3-11 C+试卷 一、选择题(每题 1 分) 1下面是关于构造函数的说法,不正确的是()。 A. C+规定,每一个类必须有一个构造函数,没有构造函数就不能创建对象 B. 如果没有提供一个类的构造函数(一个都未提供),则 C+提供一个默认的构造函数,该默认构造函数是个无 参构造函数,它仅仅负责创建对象 C. 虽然一个类定义了一个构造函数(不一定是无参构造函数),C+仍然提供默认的构造函数 D. 与变量定义类似, 在用默认构造函数创建对象时, 如果创建的是全局对象或静态对象, 则对象的位模式全为 0, 否则,对象值是随机的 2在下列说法中,不正确的是()。 A. 静态成员函数不能利用 this 指针 B. 只有非静态成员才可以使用 this 关键字,因为静态成员没有 this 指针 C.析构函数不接受任何参数,也不带有任何类型的返回值 D. 虚机制在构造函数和析构函数中仍然可以很好地工作,以实现多态性 3 多重继承的构造顺序一般可分为 4 步,下面给出这 4 个步骤: step1: 任何非虚拟基类的构造函数按照它们被继承的顺序构造。 step2: 任何虚拟基类的构造函数按照它们被继承的顺序构造。 step3: 任何成员对象的构造函数按照它们声明的顺序构造。 step4: 类自己的构造函数。 这 4 个步骤的正确顺序是()。 A. step4、step3、step1、step2B. step2、step4、step3、step1 C. step2、step1、step3、step4D. step3、step4、step1、step2 4若程序中有非法操作,则()。 A. eofbit 置位B.failbit 置位C.badbit 置位D.hardbit 置位 5设置填充字符的函数是()。 A.int ios:width(int)B.int ios:width()C.char ios:fill(char)D.char ios:fill() 6返回当前精度的成员函数是()。 A.int ios:width(int)B.int ios:width()C.int ios:precision()D. int ios:precision(int) 7要求浮点输出时必须带有一个小数点的格式控制常量是()。 A.sowbaseB.showposC.showpointD.fixed 8目前推荐的 C+标准()虚构造函数。 A. 不支持B. 支持C. 曾经支持过D.已经由过去的不支持改为支持 9下列对模板的声明,正确的是()。 A. templateB. template C. templateD. template 10 友元运算符 obj+被 C+编译器解释为()。 A. operator+(obj)B. operator+(obj,0) B. obj.operator+( )D. obj.operator+(0) 11 C+ 的运算符函数的返回类型()。 A. 可以是任意类型B. 不可以是 int 类型 C. 不能是 void 类型D. 不可以是 float 类型 12声明类 test 的复制构造函数的正确形式是()。 A. int testB. void testC. test(void)D. test(test X=5;X.print(); X=example(10); X.print(); 4由于二义性原因,一个类不能从同一个类中直接一次以上,如果必须这样做,可以使用一 个。 5在 c+中,如果在多条继承路径有一个公共的基类,如果想使这个公共的基类只产生一个拷贝,则可以将这个基 类说明为。使用关键字说明。 6简单成员函数是指声明中不含有、关键字的函数。 7静态成员为该类的所有共享,它们被存储于一个中。 8在 c+中声明和时使用 volatile 或 const 均是非法的。 9当访问私有静态数据成员时,可通过定义公有的来访问。 10有关继承,静态成员被继承,友元被继承。 11c+不允许重载、运算符。 12、四个运算符只能用类运算符来重载。 13c+提供两种格式控制方式,一种是,另一种是。 14如果 Empty 是从某个其它类派生出来的,而且这个其它类又有一个析构函数,c+也将为 Empty 写一 个。 15当一个基类定义了赋值或初始化语义,而其派生类却未定义赋值或初始化语义时,c+编译器为该派生类自动生 成一个或函数。 16如果程序员定义 class Empty; ,下列各语句将产生的函数名称是: a.const Empty e1; / 32017-3-11 b.Empty e2=e1;/ c.e2=e1;/ d.Empty *pe2=/ e.const Empty *pe1=/ 三、改错题(每题 7 分) 1. 仔细阅读下面的程序, 找出类定义中的错误及其理由, 并以尽量少的改动使其能够正确编译运行并给出运行结果。 #include class test int m; int Get()return m; public: static test(int i)m=i; void Set(int i)m=i; void Show()cout #include main() ifstream out(“myfile2“); if(!out) cout #include class base public: virtual char * fun(void)const=0; ; char * base:fun(void)const return “base“; class derived1:virtual public base public: char * fun(void)const return “derived1“; ; class derived2:virtual public base public: char * fun(void)const return “derived2“; ; class subderived:public derived1,public derived2 public: char * fun(void)const char * pch; pch=new charstrlen(derived1:fun()+strlen(derived2:fun()+1; strcpy(pch,derived1:fun(); strcat(pch,derived2:fun(); return pch; ; void main(void) base * pb; pb=new derived1; coutfun()fun()fun() class base public: virtual int fun(void)const 52017-3-11 coutfun(); b2.fun(); b3.fun(); 五、完成程序(每题 10 分) 11. 根据已有程序和输出结果完成下面的程序。 #include #include class Point private: _ protected: _ public: Point(float a, float b, float c)_ float Getx()return X; float Gety()return Y; float Getz()return Z; ; class Line:_Point private: float m; public: Line(float a, float b, float c, float d)_ _ void show() cout class base int i; int j; public: base(void):i(0),j(0) base(int I,int J): int getI(void)const return i; int getJ(void)const return j; virtual void display(void)const coutb?a:c void prt(int *x,int *y,int *z) cout void func(char *m) +m; cout int fun(char *s) char *p=s; while (*p!=0) p+; return (p-s); void main() cout0; _) p=p*x; return (p); 3.函数 void revstr(char*s)将字符串 s 逆置。例如字符串“abcde” ,经过逆置后变为“edcba” 。 void revstr(char *s) char *p, c; if(s = NULL) return; p=; /* p 指向字符串 s 的最后一个有效字符 */ while ( s const int MAX=22500; void main() unsigned int i , range , factor , k ; int sieveMAX ; coutrange; /*range 指出在多大的范围内寻找素数 */ for (i=2 ; i void fun(int *s,int n1,int n2) int i,j,t; i=n1; j=n2; while (i void fun(int a,int n,int for(int i=0;i void other(); int i; void main() static int a; int b=-10; int c=0; other(); cout int f(int a) return +a; int g(int void main() int m=0,n=0; m+=f(g(m); n+=f(f(n); cout void main() struct num int x; int y; sa = 2, 32, 8, 16, 4, 48; struct num *p = sa+1; int x; x = p-y / sa0.x * +p-x; coutx=”x int p(int k, int a) int m, i, c = 0; for(m = 2; m template class FF TT a1,a2,a3; public: FF(TT b1,TT b2,TT b3) a1=b1;a2=b2;a3=b3; TT Sum()return a1+a2+a3; ; void main() FF x(2,3,4),y(5,7,9); 112017-3-11 cout classA int a; public : A(int aa=0)a=aa; A()cout #include void main() char *a5=“student”,”worker”,”cadre”,”soldier”,”peasant”; char *p1,*p2; p1=p2=a0; for(int i=0; i0)p1=ai; if(strcmp(ai,p2) class MyClass public: _/为 x 置值 _/取 x 值 private: int x; ; void main() MyClass my(10); cout =90,B-(90,80,C-(80,70 ,D-(70,60,E- using namespace std; int main() char gd; coutgd; /直到输入有效等级,否则程序不继续运行 while(!(gd=A if(gd=A|gd=a) cout=90,B-(90,80,C-(80,70 ,D-(70,60,E- using namespace std; int main() char gd; coutgd; /直到输入有效等级,否则程序不继续运行 while(!(gd=A switch(gd) case A: case a: cout using namespace std; int main() char c; cinc; if(c=y|c=Y) int a=1; else int a=0; cout using namespace std; int main() char c; int a; cinc; if(c=y|c=Y) a=1; else a=0; cout using namespace std; int main() int a,b; couta; coutb; if( a=b ) couta“等于“bendl; else

温馨提示

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

评论

0/150

提交评论