C++习题2(构造函数和静态成员)
- 格式:doc
- 大小:64.50 KB
- 文档页数:9
一选择题(共 45题)1.对类的构造函数和析构函数描述正确的是()。
A.构造函数可以重载,析构函数不能重载√B.构造函数不能重载,析构函数可以重载C.构造函数可以重载,析构函数也可以重载D.构造函数不能重载,析构函数也不能重载2.继承具有(),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。
A)规律性 B.传递性√ C.重复性 D.多样性3.假设OneClass为一个类,则该类的复制初始化构造函数的声明语句为()。
(OneClass p); B. OneClass& (OneClass p );C. OneClass(OneClass & p);√D. OneClass (OneClass * p);4.对于结构中定义的成员,其默认的访问权限为()。
B. protected D. static5.下面对静态数据成员的描述中,不正确的是()。
A.静态数据成员可以在类体内进行初始化√B.静态数据成员不可以在类体内进行初始化C.静态数据成员能受private控制符的作用D.静态数据成员调用前必须初始6. C++中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过()派生了新的类。
A.复用B.继承√C.封装D.引用7. 假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a 的格式为()。
A. x(a)B. x[a]C. x->aD. √9. 对于一个类的构造函数,其函数名与类名( )。
A. 完全相同√B. 基本相同C. 不相同D. 无关系10. 一个类的构造函数通常被定义为该类的( )成员。
A. 公有√B. 保护C. 私有D. 友元11. 一个类的析构函数通常被定义为该类的( )成员。
A. 私有B. 保护C. 公有√D. 友元12. 一个类的静态数据成员所表示属性 ( )。
A. 是类的或对象的属性B. 只是对象的属性C. 只是类的属性√D. 类和友元的属性13.类的析构函数的作用是()。
C++面向对象程序设计模拟试题一一、单项选择题(本大题共10小题,每小题2分,共201.说明虚函数的关键字是()。
A. inlinevirtual C. define D. static2.在每个C++程序中都必须包含有这样一个函数,该函数的函数名为()。
A. mainB. MAINC. nameD. function 3.cout是某个类的标准对象的引用,该类是()。
A. ostream B. istream C. stdout D. stdin4.如果在类外有函数调用CPoint::func();则函数func()是类CPoint的()。
A. 私有静态成员函数B. 公有非静态成员函数C. 公有静态成员函数 B. 友元函数5. 如果class类中的所有成员在定义时都没有使用关键字public、private或protected,则所有成员缺省定义为()。
A. publicB. protectedC. private D.static6.一个类的所有对象共享的是()。
A. 私有数据成员 B. 公有数据成员 C. 保护数据成员 D. 静态数据成员7.动态联编所支持的多态性称为()。
A. 虚函数 B. 继承C. 编译时多态性D. 运行时多态性8.定义类模板时要使用关键字()。
A. const B. newC. deleteD. template9.对虚基类的定义()。
A. 不需要使用虚函数 B. 必须使用虚函数C. 必须使用privatD. 必须使用public10.类型转换函数()。
A. 不能带有参数 B. 只能带一个参数 C. 只能带2个参数D. 只能带3个参数二、判断正误题(本大题共6小题,每小题2分,共12分)1.虚函数在基类和派生类之间定义,且要求函数原型完全一致。
()2.抽象类可以用来直接创建对象。
()3.内联函数中可以出现递归语句。
()4.模板类与类模板的意义完全相同。
()5.常对象只能调用常成员函数。
二级C++-25(总分85.5, 做题时间90分钟)一、选择题1.对下面的程序,正确的说法是。
main(){ int a,b=1,c=2;a=b+c,a+b,c+3;c=(c)? a++:b--;cout<< a+b,c;}• A. 无错误• B. 第三行有错误• C. 第四行有错误• D. 第五行有错误SSS_SIMPLE_SINA B C D该问题分值: 2答案:A[解析] 第三行是由逗号表达式组成的语句,第四行是由条件表达式组成的语句,第五行 printf语句的输出项为逗号表达式,本题没有语法错误。
2.下面程序的运行结果是。
#include<iostream.h>int x=5;int fun(int a){int c;C=X*a;retum c;}void main(){int x=3,a=4;x=x+fun(a);cout<<"x"”<<X<<endl;}•**=15•**=17•**=23**=25SSS_SIMPLE_SINA B C D该问题分值: 2答案:C3.关于this指针的说明不正确的是• A. 不能在程序中修改this指针• B. this指针可以给其他指针赋值,但不能修改this指针• C. 静态成员函数中没有this指针• D. this指针可以被赋值SSS_SIMPLE_SINA B C D该问题分值: 2答案:D[解析] C++的this指针是系统默认产生的一个指针,它是const的,所以是不能够被改变,不能够被赋值的。
4.下列程序中,划线处正确的语句是。
#include<iostream.h>Class Base{Public:Void fun(){cout<<"Base::fun"<<endl;}};Class Derived:public Base{void fun(){______ //显示调用基类的函数fun()Cout<<"Derived::fun"<<endl;}};•**()•**()•**::fun()**>fun();SSS_SIMPLE_SINA B C D该问题分值: 1答案:C5.若有以下程序:#include<iostream>usingnamespacestd;voidsub(intx,inty,int*2){*z=y+x;}int main(){int a,b,C;sub(8,4,&A) ;sub(6,a,&B) ;sub(a,b,&C) ;cout<<a<<","<<b<<","<<c<<end1;return 0;}程序运行后的输出结果是• A. 12,18,30• B. -12,6,8• C. 6,8,10• D. 12,-18,16SSS_SIMPLE_SINA B C D该问题分值: 1答案:A[解析] 本题考核对指针作为函数的参数的理解程度。
第1章基本数据与表达式1.1选择题1.在一个C++程序中,main函数的位置( c )。
(a) 必须在程序的开头(b) 必须在程序的后面( c ) 可以在程序的任何地方(d) 必须在其它函数中间2.用C++语言编制的源程序要变为目标程序必须要经过( d )。
(a) 解释(b) 汇编(c) 编辑(d) 编译3.C++程序基本单位是( c )。
(a) 数据(b) 字符(c) 函数(d) 语句4. C++程序中的语句必须以( b )结束。
(a) 冒号(b) 分号(c) 空格(d)花括号5. 执行C++程序时出现的“溢出”错误属于( c )错误。
(a) 编译(b) 连接(c) 运行(d) 逻辑6.下列选项中,全部都是C++关键字的选项为( c )。
(a) while IF static (b) break char go(c) sizeof case extern (d) switch float integer7. 按C++标识符的语法规定,合法的标识符是(a ,c )。
(a) _abc (b) new (c) int1 (d) “age”8.下列选项中,( a )不是分隔符。
(a) ?(b) ;(c) :(d) ()9.下列正确的八进制整型常量表示是( b )。
(a) 0a0 (b) 015 (c) 080 (d) 0x1010.下列正确的十六进制整型常量表示是(a,b,d )。
(a) 0x11 (b) 0xaf (c) 0xg (d) 0x1f11.在下列选项中,全部都合法的浮点型数据的选项为(a,b,d ),全部都不合法的浮点型数据选项是( c )。
(a) -1e3 ,15. ,2e-4 (b) 12.34 ,-1e+5 ,0.0(c) 0.2e-2.5 ,e-5 (d) 5.0e-4 ,0.1 ,8.e+212.下列正确的字符常量为(b,d )。
(a) " a " (b) '\0' (c) a (d) '\101'13.下列选项中,(a,b,c )能交换变量a和b的值。
*欧阳光明*创编 2021.03.07*欧阳光明*创编 2021.03.07 习题及其解答欧阳光明(2021.03.07)第5章 类与对象5.1 选择题第7章 1. 在下列结构变量的定义中,不正确的是(d )。
第8章 (a) struct employee {char name[20]; long code; }emp;(b) struct{char name[20];longcode;}emp;(c) struct employee{charname[20];long code;} ;employee emp;(d) struct{char name[20];long code;}employee;employee emp;2.已知有职工情况结构变量emp定义为:struct employee{char name[20];long code;struct{int year;int month;int day;}birth;}emp;下列对 emp 的 birth正确赋值方法是( d )。
(a) year=1980;month=5;day=1;(b) birth.year=1980;birth.month=5;birth.day=1;(c) emp.year=1980;emp.month=5;emp.day=1;(d) emp.birth.year=1980;emp.birth.month=5;emp.birth.day=1;3.假定有以下声明和定义,则下面引用形式错误的是( b )。
struct student{int num;float score;} stu[3] = {{1001,80},{1002,75},{1003,91}}, *p = stu ;(a) p->num(b)(p++).num (c) (p++)->num(d)(*p).num4.下列四个运算符中,优先级最低的是( a )。
大工12秋《C/C++语言程序设计》在线作业2答案来源:一、单选题(共10 道试题,共60 分。
)V1. ( )是给对象取一个别名,它引入了对象的同义词。
A. 指针B. 引用C. 枚举D. 结构答案:B满分:6 分2. 下述静态数据成员的特性中,( )是错误的。
A. 说明静态数据成员时前边要加修饰符staticB. 静态数据成员要在类体外进行初始化C. 引用静态数据成员时,要在静态数据成员名前加“类名”和作用域运算符D. 静态数据成员不是所有对象所共用的答案:D满分:6 分3. 已知p是一个指向类Sample数据成员m的指针,s是类Sample的一个对象。
如果要给m赋值为5,( )是正确的。
A. s.p=5B. s->p=5C. s.*p=5D. *s.p=5 答案:C满分:6 分4. ( )是析构函数的特点。
A. 一个类只能定义一个析构函数B. 析构函数名与类名相同C. 析构函数的函数体只能在类体内D. 析构函数可以有一个或者多个参数答案:A满分:6 分5. 下列表示引用的方法中,( )是正确的。
A. int &x=m;B. int &y=10;C. int &z;D. float &t=&m; 答案:A满分:6 分6. 有关成员函数的说法错误的是( )。
A. 成员函数一定是内联函数B. 成员函数可以重载C. 成员函数可以设置参数的默认值D. 成员函数可以是静态的答案:A满分:6 分7. 有关类的说法错误的是( )。
A. 类是一种用户自定义的数据类型B. 只有类中的成员函数才能存取类中的私有数据C. 在类中,如果不作特别说明,所指的数据均为私有类型D. 在类中,如果不作特别说明,所指的成员函数均为公有类型答案:D满分:6 分8. ( )不是构造函数的特征。
A. 构造函数的函数名和类名相同B. 构造函数可以重载C. 构造函数可以设置默认参数D. 构造函数必须指定类型说明答案:D满分:6 分9. 有关类和对象的说法错误的是( )。
C++ II 练习题(2)一.单项选择题(每题2分,共20分)1.在C++中,有关类和对象正确说法是( A )。
A.对象是类的一个实例 B.对象是类的存储空间C.一个类只能有一个对象 D.类是程序包,对象是存储空间2.在类定义中,称为接口的成员是( C )。
A. 所有类成员B. private或protected的类成员C. public的类成员D. public或private的类成员3. 一个类的友员函数能够通过( D )访问该类的所有成员。
A.静态数据 B.析构造函数 C.this指针 D.类对象参数4. 下面描述错误的是( B )。
A.自定义构造函数应该是公有成员函数 B.构造函数可以是虚函数C.构造函数在建立对象时自动调用执行 D.构造函数可以重载5. 在类的继承关系中,基类的(B)成员在派生类中可见。
A. 所有B. public和protectedC. 只有publicD. 只有protected6.设B类是A类的派生类,有说明语句A a, *ap;B b, *bp;则以下正确语句是(C)。
A. a=b;B. b=a;C. ap=&b;D. bp=&a;7.C++中,以下( D )语法形式不属于运行时的多态。
A. 根据if语句的求值决定程序流程B. 根据基类指针指向对象调用成员函数C. 根据switch语句的求值决定程序流程D. 根据参数个数、类型调用重载函数8. 假设对A类定义一个重载“+”号运算符的成员函数,以便实现两个A类对象的加法,并返回相加结果,则该成员函数的函数原型为( B )。
A.A operator +( const A &A1, const A &A2 ); B.A A:: operator +( const A &A2 );C.A::operator +( A &A2 ); D.A A::operator +( );9. 一个类模板定义了静态数据成员,则( A )。
C++程序设计模拟试卷(五)一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.静态成员函数没有()A.返回值B.this指针C.指针参数D.返回类型答案:B解析:静态成员函数是普通的函数前加入static,它具有函数的所有的特征:返回类型、形参,所以使用静态成员函数,指针可以作为形参,也具有返回值。
静态成员是类具有的属性,不是对象的特征,而this表示的是隐藏的对象的指针,因此静态成员函数没有this指针。
静态成员函数当在类外定义时,要注意不能使用static关键字作为前缀。
由于静态成员函数在类中只有一个拷贝(副本),因此它访问对象的成员时要受到一些限制:静态成员函数可以直接访问类中说明的静态成员,但不能直接访问类中说明的非静态成员;若要访问非静态成员时,必须通过参数传递的方式得到相应的对象,再通过对象来访问。
2.在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是()A.友元函数B.虚函数C.构造函数D.析构函数答案:C解析:定义构造函数作用就是初始化对象,而析构函数释放对象空间。
虚函数用于完成多态性,友元增加访问方便性。
3.所有在函数中定义的变量,都是()A.全局变量B.局部变量C.静态变量D.寄存器变量答案:B解析:变量存储类可分为两类:全局变量和局部变量。
(1)全局变量:在函数外部定义的变量称为全局变量,其作用域为:从定义变量的位置开始到源程序结束。
全局变量增加了函数之间数据联系的渠道,全局变量作用域内的函数,均可使用、修改该全局变量的值,但是使用全局变量降低了程序的可理解性,软件工程学提倡尽量避免使用全局变量。
(2)局部变量:在函数内部定义的变量称为局部变量,其作用域为:从定义变量的位置开始到函数结束。
局部变量包含自动变量(auto)静态变量(static)以及函数参数。
习题2 第一题选择:1、下面的程序输出结果是什么?Aint i=2,sum=0;while(i<=5){sum=sum+i;i=i+1; }cout <<"sum = " <<sum <<endl;A、14B、15C、16D、172、下面的程序输出结果是什么?Aint a = 8;int b = ++a;cout<<a<<","<<b<<”,”;int c = a++;cout<<a<<","<<c<<endl;A、9,9,10,9B、9,10,10,9C、9,9,9,9D、9,9,10,103、下面的程序输出结果是什么?Aint x=0;if(x = 0) cout<<"a";else cout<<"b";A、bB、aC、abD、a b4、下面的程序输出结果是什么?Aint x=0;(x==0)?(cout<<"1"):(cout<<"3");A、1B、3C、13D、315、下面的程序输出结果是什么?Aint x=2;switch(x){case 1: cout<<"1";case 2: cout<<"2";case 3: cout<<"3"; break;case 4: cout<<"4";default:;}A、23B、123C、1234D、2346、下面的程序输出结果是什么?Astatic int a[]={1,2,4};for(int i=0; i<(sizeof(a)/sizeof(int)); i++)cout <<a[i] <<" ";cout <<endl;A、1 2 4B、1C、124D、127、下面的程序输出结果是什么?A#include <iostream.h>void main(){ int* iPtr;int iCount=18;iPtr=&iCount;iCount++;cout <<*iPtr <<endl; }A、19B、20C、18D、178、下面的程序输出结果是什么?A#include <iostream.h>void fun(char *s){++s; ++s;cout<<*s<<endl;}void main(){char a[] = "ABCDEFGHIJ";fun(a);}A、CB、ABCDEFGHIJC、CDEFGHIJD、A9、数组定义为int a[100];以下数组输入正确的是?CA、cin>>a[];B、cin>>a[100];C、for(int i=0;i<100;++i) cin>>a[i];D、cin>>int a[100];10、下面的程序输出结果是什么?A#include <iostream.h>void fun(char *s){ ++s; ++s;cout<<s<<endl;}void main(){ char a[] = "ABCDEFGHIJ";fun(a);}A、CDEFGHIJB、CC、ABCDEFGHIJD、J11、C++程序从上机到得到结果的几个操作步骤依次是( B )。
A. 编译、编辑、连接、运行B. 编辑、编译、连接、运行C. 编译、运行、编辑、连接D. 编辑、运行、编辑、连接12、程序中主函数的名字为( A )。
A. mainB. MAINC. MainD. 任意标识符13、设int a=15,b=26;,则cout<<(a,b);的输出结果是( D )。
A. 15B. 26,15C. 15,26D. 2614、设x是一个bool型的逻辑量,y的值为10,则表达式x && y的值为(C )。
A. 1B. 0C. 与x值相同D. 与x值相反15、字符串”a+b=12”的长度为( B )。
A. 6B. 7C. 8D. 916、下列的符号常量定义中,错误的定义是( C )。
A. const char M=10;B. const int M=20;C. const char ch;D. const bool mark=true;17、循环语句“for(int i=0; i<n; i++) cout<<i*i<<’ ’;”中循环体执行的次数为( C )。
A. 1B. n-1C. nD. n+118、在下面循环语句中循环体执行的次数为(C )。
int i=0,s=0; while(s<20) {i++; s+=i;}A. 4B. 5C. 6D. 719、在下面循环语句中循环体执行的次数为(A )。
int i=0; do i++; while(i*i<10);A. 4B. 3C. 5D. 220、假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为)。
AA. 0B. 4C. 8D. 621.下列的各类函数中,不是类的成员函数。
(C )A)构造函数B)析构函数C)友元函数D)拷贝初始化构造函数22.作用域运算符“::”的功能是:(B)A)标识作用域的级别的B)指出作用域的范围的C)给定作用域的大小的D)标识成员是属于哪个类的23.在类定义的外部,可以被访问的成员有(C )A)所有类成员B)private的类成员C)public的类成员D)public或private的类成员24.关于类和对象不正确的说法是:( C )A)类是一种类型,它封装了数据和操作B)对象是类的实例C)一个类的对象只有一个D)一个对象必属于某个类25.在C++中实现封装是借助于( B )A)枚举B) 类C) 数组D)函数26.定义析构函数时,说法正确的是:(C )A)其名与类名完全相同B)返回类型是void类型C)无形参,也不可重载D)函数体中必须有delete语句27.类的指针成员的初始化是通过函数完成的,这个函数通常是:( B )A)析构函数B) 构造函数C)其它成员函数D)友元函数28.关于构造函数的说法,不正确的是:(A )A)没有定义构造函数时,系统将不会调用它B)其名与类名完全相同C)它在对象被创建时由系统自动调用D)没有返回值29.通常拷贝构造函数的参数是:(C )A)对象名B)对象的成员名C)对象的引用名D)对象的指针名30.关于成员函数特征的描述中,错误的是:(A )A)成员函数一定是内联函数B)成员函数可以重载C)成员函数可以设置参数的默认值D)成员函数可以是静态的31.有如下类声明“class A{int x;……};”,则A类的成员x是:(B )A)公有数据成员B)私有数据成员C)公有成员函数D)私有成员函数32.以下关键字不能用来声明类的访问权限的是:(C )A)public B)private C)static D)protected33.类的私有成员可在何处访问( D )A)通过子类的对象访问B)本类及子类的成员函数中C)通过该类对象访问D)本类的成员函数中34.如果没有为一个类定义任何构造函数的情况下,下列描述正确的是:(A )A)编译器总是自动创建一个不带参数的构造函数B)这个类没有构造函数C)这个类不需要构造函数D)该类不能通过编译35.下列关于类的权限的描述错误的是:(A )A)类本身的成员函数只能访问自身的私有成员B)类的对象只能访问该类的公有成员C)普通函数不能直接访问类的公有成员,必须通过对象访问D)一个类可以将另一个类的对象作为成员36.设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是:(B )A)A类构造函数先执行B)成员构造函数先执行C)两者并行执行D)不能确定37拷贝构造函数的作用是(C )。
A. 进行数据类型的转换B. 用对象调用成员函数C. 用对象初始化对象D. 用一般类型的数据初始化对象38.通过指针访问类对象成员的方法是(D)。
A. ::B. ;C. .D. ->39.对C++语言和C语言的兼容性,描述正确的是:( A )A)C++兼容C B)C++部分兼容C C)C++不兼容C D)C兼容C++40.下列静态数据成员的特性中,错误的是(D )。
A.静态数据成员的声明以关键字static开头B. 静态数据成员必须在文件作用域内初始化C. 引导数据成员时,要在静态数据成员前加(类名)和作用域运算符D. 静态数据成员不是类所有对象共享的第二题:填空题1、在撤销类的对象时,C++程序将自动调用该对象的_析构____函数。
2、对类中的成员函数和属性的访问是通过public__、__protected__和___private这3个关键字来控制的。
3、若要把类FriendClass定义为类MyClass的友元类,则应在类MyClass的定义中加入语句__ friend class FriendClass;___。
_____________ 。
4、若要把函数void FriendFunction()定义为类MyClass的友元函数,则应在类MyClass的定义中加入语句___friend void FriendFunction();_______________。
5、在结构定义中,数据和成员函数默认权限是_ _public____________。
在类定义中,数据和成员函数默认权限是__ private____________。
6、一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为__ private_________权限,而把成员函数(方法)定义为__ public_________权限。
7、在类中定义和实现的函数称为内联函数_ __。
8、非成员函数应声明为类的_友元函数_______才能访问这个类的private成员。
9. 假定x=10,则表达式x<=10?20:30的值为___20_________。
10.表达式sqrt(81)和pow(6,3)的值分别为__9____和___216___。