admin 管理员组文章数量: 1087139
2024年4月22日发(作者:java开发参考文献)
一、选择题
:
1、下列关于类的描述中,错误的是( A )。
A.类就是C语言中的结构类型
B.类是创建对象的模板
C.类是抽象数据类型的实现
D.类是具有共同行为的若干对象的统一描述体
2、下列常量中,不是字符常量的是( B )。
A.'n' B."y"
C.'x' D.'7'
3、下列表达式中,其值为0的是( A )。
A.5/10 B.!0
C.2>4?0:1 D.2&&2||0
4、下列关于数组维数的描述中,错误的是( C )。
A.定义数组时必须将每维的大小都明确指出
B.二维数组是指该数组的维数为2
C.数组的维数可以使用常量表达式
D.数组元素个数等于该数组的各维大小的乘积
5、下列关于字符数组的描述中,错误的是( D )。
A.字符数组中的每一个元素都是字符
B.字符数组可以使用初始值表进行初始化
C.字符数组可以存放字符串
D.字符数组就是字符串
6、已知:int a[5] = {1, 2, 3, 4}; 下列数组元素值为2的数组元素是( B )。
A.a[0] B.a[1]
C.a[2] D.a[3]
7、下列while循环语句的循环次数是( A )。
while(int i(0)) i--;
A.0 B.1
C.2 D.无限
8、已知:int a[ ]={1,2,3,4,5},*p=a;在下列数组元素地址的表示中,正确的是( C
A.&(a+1) B.&(p+1)
C.&p[2] D.*p++
9、已知:int a=1,b=2,*p[2];下列表达式中正确的是( C )。
A.p=&a B.p=&b
C.p[0]=&a,p[1]=&b D.p[ ]={&a,&b};
10、当一个函数没有返回值时,该函数类型应说明为( A )。
A.void B.int
C.无 D.任意
。)
11、下列关于类的定义格式的描述中,错误的是( C )。
A.类中成员有3种访问权限
B.类的定义可分说明部分和实现部分
C.类中成员函数都是公有的,数据成员都是私有的
D.定义类的关键字通常用class,也可用struct
12、下列关于成员函数的描述中,错误的是( A )。
A.成员函数的定义必须在类体外
B.成员函数可以是公有的,也可以是私有的
C.成员函数在类体外定义时,前加inline可为内联函数
D.成员函数可以设置参数的默认值
D.一个类所能创建对象的个数是有限制的
13、下列关于构造函数的描述中,错误的是( C )。
A.构造函数可以重载
B.构造函数名同类名
C.带参数的构造函数具有类型转换作用
D.构造函数是系统自动调用的
14、下列关于静态成员的描述中,错误的是( C )。
A.静态成员都是使用static来说明的
B.静态成员是属于类的,不是属于某个对象的
C.静态成员只可以用类名加作用域运算符来引用,不可用对象引用
D.静态数据成员的初始化是在类体外进行的
15、Void Set(A&a);是类A中一个成员函数的说明,其中A&a的含义是( A )。
A.类A的对象引用a作该函数的参数
B.类A的对象a的地址值作函数的参数
C.表达式变量A与变量a按位与作函数参数
16、下列关于运算符delete的描述中,错误的是( B )。
A.使用该运算符可以释放用new运算符创建的对象或对象数组
B.使用该运算符可以释放所有对象
C.使用delete运算符时会自动调用析构函数
D.用它释放对象数组时,它作用的指针名前要加下标运算符[ ]
17.下列关于基类和派生类的描述中,错误的是( C )。
A.一个基类可以生成多个派生类
B.基类中所有成员都是它的派生类的成员
C.基类中成员访问权限继承到派生类中不变
D.派生类中除了继承的基类成员还有自己的成员
18、派生类的对象可以直接访问的基类成员是( A )。
A.公有继承的公有成员 B.保护继承的公有成员
C.私有继承的公有成员 D.公有继承的保护成员
19、含有一个或多个纯虚函数的类称为( A )。
A.抽象类 B.具体类
C.虚基类 D.派生类
20、下列关于动态联编的描述中,错误的是( C )。
A.动态联编是函数联编的一种方式,它是在运行时来选择联编函数的
B.动态联编又可称为动态多态性,它是C++语言中多态性的一种重要形式
C.函数重载和运算符重载都属于动态联编
D.动态联编只是用来选择虚函数的
1、下列关于对象的描述中,错误的是( C )。
A.对象是类的一个实例
B.对象是属性和行为的封装体
C.对象就是C语言中的结构变量
D.对象是现实世界中客观存在的某种实体
2、在函数体内定义了下述变量a,a的存储类为( D )。
int a;
A.寄存器类 B.外部类
C.静态类 D.自动类
3、下列关于数组概念的描述中,错误的是( B )。
A.数组中所有元素类型是相同的
B.数组定义后,它的元素个数是可以改变的
C.数组在定义时可以被初始化,也可以不被初始化
D.数组元素的个数与定义时的每维大小有关
4、下列关于数组下标的描述中,错误的是( B )。
A.C++语言中数组元素的下标是从0开始的
B.数组元素下标是一个整常型表达式
C.数组元素可以用下标来表示
D.数组元素的某维下标值应小于该维的大小值
5、下列关于字符串的描述中,错误的是( C )。
A.一维字符数组可以存放一个字符串
B.二维字符数组可以存放多个字符串
C.可以使用一个字符串给二维字符数组赋值
D.可以用一个字符串给二维字符数组初始化
6、已知:int b[5] = {1, 2, 3, 4}; 下列数组元素值为2的数组元素是( B )。
A.b[0] B.b[1]
C.b[2] D.b[3]
7、已知:int i(3);下列do-while循环语句的循环次数是( D )。
do{
cout< i--; }while(i!=0); A.0 B.3 C.1 D.无限 8、已知:int b[ ]={1,2,3,4,5},*p=b;在下列数组元素地址的表示中,正确的是( C A.&(a+1) B.&(p+1) C.&p[2] D.*p++ 。) 9、已知:int a(5),&ra=a;下列描述中,错误的是( D )。 A.ra是变量a的引用,即为变量的别名 B.ra的值为5 C.ra的地址值为&a D.改变ra的值为10,变量a值仍为5 10、下列关于被调用函数中return语句的描述中,错误的是( D )。 A.一个函数中可以有多条return语句 B.return语句具有返回程序控制权的作用 C.函数通过return语句返回值时仅有一个 D.一个函数中有且仅有一条return语句 11、下列关键字中,不属于定义类时使用的关键字是( D )。 A.class B.struct C.public D.default 12、下列关于对象的描述中,错误的是( D )。 A.定义对象时系统会自动进行初始化 B.对象成员的表示与C语言中结构变量的成员表示相同 C.属于同一个类的对象占有内存字节数相同 D.一个类所能创建对象的个数是有限制的 13、下列关于析构函数的描述中,错误的是( A )。 A.析构函数的函数体都为空 B.析构函数是用来释放对象的 C.析构函数是系统自动调用的 D.析构函数是不能重载的 14、下列关于友元函数的描述中,错误的是( B )。 A.友元函数不是成员函数 B.友元函数只可访问类的私有成员 C.友元函数的调用方法同一般函数 D.友元函数可以是另一类中的成员函数 15.下列关于运算符new的描述中,错误的是( D )。 A.它可以创建对象或变量 B.它可以创建对象数组或一般类型数组 C.用它创建对象或对象数组时要调用相应的构造函数 D.用它创建的对象可以不用delete运算符释放 16、下列关于this的描述中,错误的是( D )。 A.this是一个由系统自动生成的指针 B.this指针是指向对象的 C.this指针在用对象引用成员函数时系统创建的 D.this指针只能隐含使用,不能显式使用 17、下列关于派生类的描述中,错误的是( D )。 A.派生类至少有一个基类 B.一个派生类可以作另一个派生类的基类 C.派生类的构造函数中应包含直接基类的构造函数 D.派生类默认的继承方式是public 18、下列描述中,错误的是( D )。 A.基类的protected成员在public派生类中仍然是protected成员 B.基类的private成员在public派生类中是不可访问的 C.基类public成员在private派生类中是private成员 D.基类public成员在protected派生类中仍是public成员 19、下列关于虚函数的描述中,错误的是( C )。 A.虚函数是一个成员函数 B.虚函数具有继承性 C.静态成员函数可以说明为虚函数 D.在类的继承的层次结构中,虚函数是说明相同的函数 20、已知文本文件,以读方式打开,下列的操作中错误的是( D )。 A.fstream infile ("", ios::in); B.ifstream infile (""); C.ofstream infile (""); D fstream infile; ("", ios::in); 二、填空题: 1、如果一个类中没有定义任何构造函数时,系统会自动提供一个 默认 构造函数;同样, 类中没有定义析构函数时,系统会自动提供一个 默认 析构函数。 2、静态成员是属于 类 的,它除了可以通过对象名来引用外,还可以使用 类名限定 来引用。 3、友元函数是被说明在 类体 内的 非 成员函数。友元函数可访问该类中的 ___私有_____成员。 4、类体内成员有3个访问权限,说明它们的关键字分别是 公有 、 私有 和 保护 。 6、定义类A中有两个公有成员函数,其中一个是构造函数,另一个是静态成员函数f1(), 还有两个私有的数据成员,一个是静态的整型数据成员a,另一个是整型的数据成员b。为 满足上述要求,请填写下列程序的空白处。 …… ___class_______A { ___static______ int a; ___int____ b; public: ___A______ (int i ) { b=i; } ____static______ void f1( ); }; …… 7、P类公有继承Q类,P和Q类中都仅有一个私有的数据成员,P类中两个成员函数,一 个是构造函数,另一个友元函数fun( )。下列一段程序实现上述要求,请将空白处填上适当 的内容。 …… Class P :_ public______ __ Q_______ { Public: P ( int i ,int j ) :___Q( j )_____ { p=i; } __ friend____ void fun( ) ; Private: __ int p______; }; …… 三、判断题 √ 1、构造函数可以重载。 √ 2、类的数据成员不一定都是私有的。 √ 3、对象数组的元素应该是同类的对象。 × 4、在私有继承中,基类中只有公有成员对派生类是可见的。 √ 5、抽象类是不能创建对象的。 √ 6、定义一个对象时,系统总会对该对象进行初始化的。 × 7、静态对象的成员称为静态成员。 √ 8、this指针是指向对象的指针,是系统自动生成的。 √ 9、运算符new可以创建对象,也可创建对象数组。 √ 10、C++语言对标准文件的读写函数与对磁盘文件的读写函数是一致的。 × 11、在私有继承中,基类中只有公有成员对派生类是可见的。 √1 2、引用可以作函数参数,不能作函数的返回值。 √1 3、抽象类是不能创建对象的。 √1 4、C++语言既支持单继承,又支持多继承。 ×1 5、没有参数的构造函数称为默认构造函数,该构造函数一定是系统自动生成的。 √1 6、在用一个对象给同类的另一个对象赋值时,调用拷贝初始化构造函数。 √1 7、友元类中的所有成员函数都是友元函数。 √1 8、运算符new可以创建对象,也可创建对象数组。 ×1 9、定义派生类时必须指出基类名和继承方式,二者都不可默认。 √ 200、C++语言对标准文件的读写函数与对磁盘文件的读写函数是一致的。 四、分析下列程序的输出结果 1、 #include using namespace std; class M { int a; public: M() { a=0; } M(int i) { a=i; cout<<"in Mn";} int geta() { return a;} }; void main() { M r1,r2(18); cout<<()< cout<<()< } 答案:in M 0 18 2、#include using namespace std; class B { public: B() { cout<<++b< ~B() { cout< static int Getb() { return b; } private: static int b; }; int B::b=10; void main() { B b1,b2,b3; cout< } 答案:11 12 13 13 13 12 11 3、#include using namespace std; class C { public: C(int i,int j) { c1=i;c2=j; } void Sum(C a,C b) { c1=a.c1+b.c1; c2=a.c2+b.c2; } void Print() { cout<<"c1="< private: int c1,c2; }; void main() { C a(60,90); C b(a); C c(b); (a,b); (); } 答案:c1=120,c2=180 4、#include using namespace std; class A { public: A() { a1=a2=0; cout<<"Default constructor called.n"; } A(int i,int j); ~A() { cout<<"Destructor called.n"; } void Print() { cout<<"a1="< private: int a1,a2; }; A::A(int i,int j) { a1=i; a2=j; cout<<"Constructor called.n"; } void main() { A a,b(5,8); (); (); } 答案: Default constructor called. Constructor called. a1=0,a2=0 a1=5,a2=8 Destructor called. Destructor called. 5、#include using namespace std; class A { public: A() { a1=a2=0; } A(int i,int j) { a1=i; a2=j; } ~A() { cout<<"An"; } A(A &a) { a1=a.a1+2;a2=a.a2+2; cout<<"Cn"; } void print() { cout< private: int a1,a2; }; void fun(A &a) { A b; b=a; (); } void main() { A x(4,8),y; A p(x); y=x; fun(p); (); } 答案:C 16 A 12 A A A 6、#include using namespace std; class A { public: void InitA(int i,int j) { a1=i; a2=j; } void Move(int x,int y) { a1+=x; a2+=y; } int Geta1() { return a1; } int Geta2() { return a2; } private: int a1,a2; }; class B:public A { public: void InitB(int i,int j,int k,int l) { InitA(i,j); b1=k; b2=l; } void Move(int x,int y) { b1+=x;b2+=y; } int Getb1() { return b1; } int Getb2() { return b2; } private: int b1,b2; }; class C:public B { public: void fun() { Move(10,15); } }; void main() { C c; (11,12,13,14); (); cout<<1()<<','<<2()<<','<<1()<<','<<2()< } 答案: 11,12,23,29 1.#include void main() { int a=40; while(--a) { if(a==20) break; if(a%2==0||a%3==0||a%5) continue; cout< } } 答案:34 24 2、 #include using namespace std; class Date { public: Date(int y,int m,int d) { year=y; month=m; day=d; } friend void Print(Date &); private: int year,month,day; }; void Print(Date &d) { cout<<<<“/”<<<<“/”<<< } void main() { Date d1(2005,10,1),d2(2005,12,9); Print(d1); Print(d2); } 答案:2005/10/1 2005/12/9 3、#include using namespace std; class A { public: A() { a=0; } A(int i) { a=i; } int Geta( A &m); private: int a; }; int A::Geta( A &m) { return m.a; } void main() { A d(6); cout<<(d)< } 答案: 6 4、#include class D { public: D() { d1=d2=0; cout<<"Default constructor callrd.n"; } D(int i,int j) { d1=i; d2=j; cout<<"Constructor called."<<"d1="< } ~D() { cout<<"Destructor called."<<"d1="< void Set(int i,int j) { d1=i;d2=j; } private: int d1,d2; }; void main() { int n=10,m=20; D d[4]={D(5,7),D(3,6),D(7,9),D(1,4)}; for(int i=0;i<4;i++) d[i].Set(n++,m++); } 答案:Constructor called.d1=5,d2=7 Constructor called.d1=3,d2=6 Constructor called.d1=7,d2=9 Constructor called.d1=1,d2=4 Destructor called.d1=13,d2=23 Destructor called.d1=12,d2=22 Destructor called.d1=11,d2=21 Destructor called.d1=10,d2=20 5、#include using namespace std; class PQ { public: PQ(int i=0) { p=i; } void print() { cout< ~PQ() { cout<<"PQ"< private: int p; }; PQ a(8); void main() { PQ *p1,*p2; p1=new PQ(7); p2=new PQ[2]; p2[0]=a; p2[1]=*p1; (*p1).print(); p2[0].print(); p2[1].print(); delete p1; delete [] p2; } 答案:7 8 7 PQ7 PQ7 PQ8 PQ8 6、 #include using namespace std; class A { public: void InitA(int i,int j) { a1=i;a2=j; } void Move(int x,int y) { a1+=x;a2+=y; } int Geta1() { return a1; } int Geta2() { return a2; } private: int a1,a2; }; class B:public A { public: void InitB(int i,int j,int k,int l) { InitA(i,j); b1=k; b2=l; } void Move(int x,int y) { b1+=x;b2+=y; } int Getb1() { return b1; } int Getb2() { return b2; } private: int b1,b2; }; class C:public B { public: void fun() { Move(10,15); } }; void main() { C c; (11,12,13,14); (); cout<<1()<<','<<2()<<','<<1()<<','<<2()< } 答案:11, 12, 23, 24 五、编程题:( 总 10分,每小题 10分 ) 按下列要求编程: (1)定义一个描述矩形的类Rectangle,包括的数据成员有宽(width)和长(length); (本小题4分) (2)计算矩形周长;(本小题2分) (3)计算矩形面积;(本小题2分) (4)改变矩形大小。(本小题2分) 通过实例验证其正确性。 答:编程如下: #include class Rectangle { public: Rectangle(int a,int b) { width=a; length=b; } int Area() { return width*length; } int Circle() { return 2*(width+length); } void Changesize(int a,int b) { width=a; length=b; } void Print(); private: int width,length; }; void Rectangle::Print() { cout<<"AREA="< cout<<"PERIMENT="< } void main() { Rectangle r(5,8); (); size(3,9); (); } 编一个关于求多个某门功课总分和平均分的程序。具体要求如下: (1)每个学生信息包括姓名和某门功课成绩。 (本小题5分) (2)假设5个学生。(本小题2分) (3)使用静态成员计算5个学生的总成绩和平均分。(本小题3分) 答:编程如下: #include using namespace std; class Student { public: Student(char *s,int gr) { name=s; grade=gr; total+=gr; } static void Print(); private: char *name; int grade; static int total; }; int Student::total=0; void Student::Print() { cout<<"总成绩为 "< } void main() { Student s1("ma",85),s2("Wang",96),s3("Li",82),s4("lu",78),s5("zhang",80); Student::Print(); }
版权声明:本文标题:c#面向对象试题及答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1713753335a649954.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论