![c练习题带答案_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/ea87f7cc-c360-4944-aef6-bc7babfd08e7/ea87f7cc-c360-4944-aef6-bc7babfd08e71.gif)
![c练习题带答案_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/ea87f7cc-c360-4944-aef6-bc7babfd08e7/ea87f7cc-c360-4944-aef6-bc7babfd08e72.gif)
![c练习题带答案_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/ea87f7cc-c360-4944-aef6-bc7babfd08e7/ea87f7cc-c360-4944-aef6-bc7babfd08e73.gif)
![c练习题带答案_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/ea87f7cc-c360-4944-aef6-bc7babfd08e7/ea87f7cc-c360-4944-aef6-bc7babfd08e74.gif)
![c练习题带答案_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/ea87f7cc-c360-4944-aef6-bc7babfd08e7/ea87f7cc-c360-4944-aef6-bc7babfd08e75.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、、选择题1. C+ 语言属于 ( C )。A)自然语言B) 机器语言C)面向对象语言D) 汇编语言2. 下面选项中不属于面向对象程序设计特征的是 (C) 。A)继承性 B)多态性 C)相似性 D)封装性3. 可用作 C+ 语言用户标识符的一组标识符是 ( B )。A ) voiddefine +WORDB) a3_b3_123 YNC) for-abc CaseD) 2a DO sizeof4. 假定一个二维数组的定义语句为“ int a34=3,4,2,8,6; ”,则元素 a21 的值为 ( A)。A) 0B) 4C) 8 D) 65. 下列情况中,哪一种情况不会调用拷贝构造函数 ( B
2、)A)用派生类的对象去初始化基类对象时B)将类的一个对象赋值给该类的另一个对象时C)函数的形参是类的对象,调用函数进行形参和实参结合时D )函数的返回值是类的对象,函数执行返回调用者时6. 以下哪一关键字可用于重载函数的区分( C )A)externB ) staticC) constD ) virtual7. 下列有关数组的叙述中,正确的是(B )A)C+ 中数组的存储方式为列优先存储B)数组名可以作为实参赋值给指针类型的形参C)数组下标索引从1开始,至数组长度 n结束D) 数组指针的语法形式为:类型名*数组名下标表达式;8. 下列有关继承和派生的叙述中,正确的是 ( C )A)派生类不能访
3、问通过私有继承的基类的保护成员B)多继承的虚基类不能够实例化C)如果基类没有默认构造函数,派生类就应当声明带形参的构造函数D)基类的析构函数和虚函数都不能够被继承,需要在派生类中重新实现9. 实现运行时多态的机制是(A )A)虚函数B)重载函数C)静态函数D )模版函数10. 若有下面的函数调用:fun(a+b, 3, max(n-1, b);其中实参的个数是( A )A) 3B) 4C) 5D)611. 下列关于 this 指针的说法正确的是( B )A) this 指针存在于每个函数之中B) 在类的非静态函数中this指针指向调用该函数的对象C) this 指针是指向虚函数表的指针D) t
4、his 指针是指向类的函数成员的指针12.13.在下列关于 C+ 函数的叙述中,正确的是A)每个函数至少要有一个参数C)函数在被调用之前必须先声明下列运算符中,不能重载的是B)D)14.A) &&B) !=面程序的输出结果是( #include <iostream> using namespace std; int i = 0;int fun(int n) static int a = 2; a+;return a+n; void main()int k = 5;int i = 2; k += fun(i);k += fun(i); cout << k;
5、A) 13B) 14C)D)C)15C)每个函数都必须返回一个值函数不能自己调用自己->D) 1615. 下面的程序段的运行结果为 char str = "job", *p = str; cout << *(p+2) << endl;A) 98B)无输出结果C)字符b '16. 下面程序的输出结果是( C )#include <iostream>using namespace std;class Apublic:A (int i) x = i; void dispa () cout << x <<“
6、,” ; private :int x ;class B : public Apublic:B(int i) : A(i+10) x = i; void dispb() dispa(); cout << x << endl; private :int x ;void main()B b(2);();A) 10,2B) 12,10C) 12,217. 下面程序的输出结果是( C )#include <iostream>using namespace std;class Basepublic:Base(int i) cout << i; Base (
7、) ;class Base1: virtual public Basepublic:的地址 D)字符b D) 2,2Base1(int i, int j=0) : Base(j) cout << i; Base1() ;class Base2: virtual public Basepublic:Base2(int i, int j=0) : Base(j) cout << i; Base2() ;class Derived : public Base2, public Base1public:Derived(int a, int b, int c, int d) :
8、mem1(a), mem2(b), Base1(c),Base2(d), Base(a) cout << b; private:Base2 mem2;Base1 mem1;void main() Derived objD (1, 2, 3, 4); 18.A) 134122B) 123412C)面程序的输出结果是( C ) #include <iostream> using namespace std;class Basepublic:virtual void f() cout << “f0+”; void g() cout << “ g0+ ”
9、 ; ;class Derived : public Basepublic:void f() cout << “f+”; void g() cout << “g+ ” ; ;void main() Derived d; Base *p = &d;D)143212p->f(); p->g(); 19.A) f+g+B) f0+g+C) f+g0+D)f0+g0+面程序的输出结果是( C )#include <iostream> using namespace std;class Samplefriend long fun (Sample s
10、)if < 2) return 1; return * fun(Sample); public:Sample (long a) x = a; private:long x;void main()int sum = 0;for (int i=0; i<4; i+)sum += fun(Sample(i); cout << sum;A)12B) 16C) 1020. 以下程序的输出结果是:( D ) #include <iostream> using namespace std; int fun(char *s) char *p=s; while (*p!=
11、39;0') p+; return (p-s);void main() cout<<fun("abc")<<endl;A0B. 1D)34C. 2D. 321. 有如下程序段:int i=1;while(1)i+;if (i=10) break; if(i%2=0) cout<<执行这个程序段输出字符 *的个数是 (C)A. 10B. 3C. 4 22. 下列关于虚基类的描述中,错误的是 (C)A. 使用虚基类可以消除由多继承产生的二义性B. 构造派生类对象时,虚基类的构造函数只被调用一次C. 声明 class B:virtual
12、 public A 说明类 B 为虚基类D. 建立派生类对象时,首先调用虚基类的构造函数23. 有下类定义 Class A Char *a; Public:A():a(0)A(char *aa) new charstrlen(aa)+1 B. charstrlen(aa)+1C. charstrlen(aa) D. new charsizeof(aa)-124. 假定 AA 为一个类, a 为该类私有的数据成员, GetValue( )为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(X )。B) ()C) x->GetValue()D) ( )25
13、. 假定 AA 为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为( A )。B) int AA:a()D) AA:int a()A) int AA:a( )C) AA:a()26. 有如下程序:#include<iostream> using namespace std; class Test public: Test()Test()cout<<'#'int main()Test temp2, *pTemp2;return 0; 执行这个程序输出星号( # )的个数为( B )。A)1 B)2 C) 3 D)427.
14、 有如下程序: #include<iostream> using namespace std; class MyClass public:MyClass(int i=0)cout<<1;MyClass(const MyClass&x)cout<<2;MyClass& operator=(const MyClass&x)cout<<3; return *this; MyClass()cout<<4;int main()MyClass obj1(1),obj2(2),obj3(obj1); obj1=obj2;re
15、turn 0; 运行时的输出结果是( A)。A)1123444 B)C) 121444 D)28. 有如下程序: #include <iostream> using namespace std; class pointpublic: static int number;public:point() number+; point() number-;int point:number=0;void main() point *ptr;point A,B;point *ptr_point=new point3;ptr=ptr_point;point C;delete ptr; cout&
16、lt;<point:number;程序结果为 (A)A) 3 B) 4 C)6 D)729. 友元运算符 obj+ 被 C+ 编译器解释为( D )。A. operator+(obj)B. operator+(obj,0)B. +( )D. +(0)二、程序填空1用递归法求从 1 到 n 的立方和: f(1)=1(n=1)3f(n)=f(n-1)+n 3(n>1)#include <iostream> using namespace std;int f(int);int main()int n,s;cout«"i nput the nu mber n
17、:"cin>>n;s=f(n);cout«"The result is "<<s<<e ndl;return 0;int f(int n)请将下列程序补充完整,使得输出结果为"Destructor DerivedDestructor Base ”。#i nclude <iostream>using n amespace std;class Basepublic:virtual Base () cout <<“Destructor Base ” << endl; ;class
18、 Derived : public Basepublic:Derived() cout <<“Destructor Derived ” << endl; ;void mai n ()Base *pBase = new Derived;delete pBase;三、阅读程序,写出运行结果1.#in clude<iostream>#in clude<cstri ng>using n amespace std;class CDchar n ame20;int number;public:void Init(char* aa, int bb)strcpy
19、(name,aa); number=bb;char* Getname () return name;int Getnumber () return number;void Output() cout<< name <<' '<< number <<endl; ;CD dx;void main()CD dy;("歌唱祖国 ",30);("义勇军进行曲 ",3* ()+5);();(); 歌唱祖国 30 义勇军进行曲 952 #include <iostream>using name
20、space std;int f(int a)return +a;int g(int& a)return +a;void main()int m=0,n=0;m+=f(g(m);n+=f(f(n);cout<<"m="<<m<<endl; cout<<"n="<<n<<endl;3. #include <iostream>using namespace std;class Demopublic:Demo()cout<<"default cons
21、tructorn"Demo(const Demo &x)cout<<"copy constructorn"Demo userCode(Demo b)Demo c(b);return c;void main()Demo a,d;cout<<"calling userCode()n"d = userCode(a);执行上面的程序的过程中, 构造函数 Demo() 和 Demo(const Demo &x) 被调用的次数分别是多少次?五、编写程序1、编写函数计算 y=1!+2!+3!.n! ,n 作为参数传递,
22、在主函数调用该函数 并输出结果。2、编写函数找出二维数组( 5*4 )中元素的最大值与最小值,并返回其最 大值与最小值。测试结果。3、编写一个三角形类,有计算面积,显示面积的功能等,并测试。要求有 参数的构造函数及复制构造函数AA下面关于类概念的描述中,(D )是错误的。A)类是抽象数据类型的实现B)类是具有共同行为的若干对象的统一描述体C)类是创建对象的样板D)类就是C语言中的结构体类型AADAA面向对象程序设计思想的主要特征中不包括(D ) 0A)封装性B)多态性C)继承性D)功能分解,逐步求精AAD01|11|1|1AA在C + +中,函数原型不能标识 ()。A)函数的返回类型B)函数参
23、数的个数C)函数参数类型D)函数的功能AAD01|11|1|1AA有关析构函数的说法不正确的是()。A)析构函数有且仅有一个 B)析构函数和构造函数一样可以有形 参C)析构函数的功能是用来释放一个对象 D)析构函数无任何函数类 型AAB01|11|2|1AA已知X类.则当程序执行到语句,X array3;时,调用了( D )次构 造函数。A)0B)1C)2D)3aad01|13|1|1AA类定义的内容允许被其他对象无限制地存取是( C )0A)private部分 B)protected部分 C)public部分 D)以上都不对 aac01|01|2|1aa关于new运算符的下列描述中,(D )
24、是错误的.0A)它可以用来动态创建对象和对象数组B)使用它创建对象或对象数组,可以使用运算符DELETE删除C)使用它创建对象时要调用构造函数D)使用它调用对象数组时不许指定初始值aad01|01|2|1AA对于下面程序段,表达式正确的是( B )0class Base public:i nt b;class Base1:public base ;class Base2:public base ;class Derived:public base1,public base2public:i nt fun ( );Derived d;A)d. Base1:bB) d. Base :bC)D) d
25、. Base : fun()AAB01|12|1|1aa可以用的形式访问派生类对象 p的基类成员a其中a是(D ) <A)私有继承的公有成员B)公有继承的私有成员C)公有继承的保护成员D)公有继承的公有成员AADAA下列关于C + +类的描述中错误的是(C ) oA)类与类之间可以通过一些手段进行通信和联络B)类用于描述事物的属性和对事物的操作C)类与类之间必须是平等的关系,D)类与类之间可以通过封装而具有明确的独立性AAC01|12|1|1AA下列描述中哪个是正确的(B )oA)私有派生的子类无法访问父类的成员B)类A的私有派生子类的派生类C无法初始化其祖先类A对象的属性,因 为类A的
26、成员对类C是不可访问的C)私有派生类不能作为基类派生子类D)私有派生类的所有子孙类将无法继续继承该类的成员AAR01|11|1|1AA下列关于构造函数说法不正确的是()。A)构造函数必须与类同名B)构造函数可以省略不写C)构造函数必须有返回值D)在构造函数中可以对类中的成员进行初始化01|13|1|1AA如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运 算符是(D )oB)二元运算符D)重载错误A)元运算符C)选项A)和选项B)都可能AAD01|14|1|1AA在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是B)二元成员运算符D)选项B)和选项C)都可能(D )0A
27、)元成员运算符C) 一元友元运算符AAD01|12|1|1D )C)公有成员D)所有成员AA 一个类的友元函数能够访问该类的( A)私有成员B)保护成员AADA )。AA下列关于类定义的说法中,正确的是A)类定义中包括数据成员和函数成员的声明B)类成员的缺省访问权限是保护的C)数据成员必须被声明为私有的D)成员函数只能在类体外进行定义AA A01|14|1|1(AC))。优先级D)结合性D )o(C)避免数据丢失AA通过运算符重载,可以改变运算符原有的A)操作数类型 B)操作数个数AAA01|14|1|1AA在C + +语言中,数据封装要解决的问题是A)数据的规范化B)便于数据转换D)防止不同
28、模块之间数据的非法访问AAD01|13|1|1AA对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列 不是访问控制属性的是(D)。A)公有类型B)私有类型C)保护类型D)友元类型AAD01|11|1|1AA在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并 执行其他内部管理操作的函数是(C )。A)友元函数B)虚函数C)构造函数 D)析构函数AAC01|11|1|1AA类的析构函数的作用是( D)。A)般成员函数的初始化B)类的初始化C)对象的初始化D)删除类创建的对象AAD01|13|1|1AA下列说法正确的是(B )。A)内联函数在运行时是将该函数的目标代码插入
29、每个调用该函数的地 方B)内联函数在编译时是将该函数的目标代码插入每个调用该函数的 地方C)类的内联函数必须在类体内定义D)类的内联函数必须在类体外通过加关键字inline定义AAB01|12|1|1AA下列对派生类的描述中,错误的是(D )。A)个派生类可以作为另一个派生类的基类B)派生类至少有一个基类C)派生类的成员除了自己的成员外,还包含了它的基类的成员D)派生类中继承的基类成员的访问权限到派生类保持不变AAD01|12|1|1AA运算符的重载是对已有的运算符赋予多重含义,因此( A )0A)可以对基本类型(如int类型)的数据,重新定义“ + ”运算符的含义B)可以改变一个已有运算符的
30、优先级和操作数个数C)只能重载C+中已经有的运算符,不能定义新运算符D)C+中已经有的所有运算符都可以重载AAA01|13|1|1AA如果类A被说明成类B的友元,贝U( D)0A)类A的成员即是类B的成员 B)类B的成员即是类A的成员C)类A的成员函数不得访问类B的成员D)类B不一定是类A的友元AAD01|13|1|1AA不能作为重载函数的调用的依据是( D )0A)参数的个数B)参数的类型C)函数的类型D)函数的名称AAD01|13|1|1AA在C + +语言的面向对象设计框架中,类 是程序的基本组成单元。AA类01|13|1|1AA继承的方式的公有继承、私有继承和 保护继承三种。AA保护继
31、承01|13|1|1在用lass定义一个类时,数据成员函数的默认访问权限是私有的 )。AA私有的01|13|1|1AA类的构造函数是在 定义对象时调用的。AA定义对象01|13|1|1AA类模板的使用实际上是将类模板实例化成一个具体的( 对象)。AA对象01|13|1|1aa如果类B继承了类A,则称类A为类B的基类,类B称为类A的(派生类 )。AA派生类01|13|1|1如果要把返回值为void的函数A声明为B类的友元数,则应在类B的定义 中加入语句是(12)。02|10|1|1AA有如下定义:class MAint value;public:MA ( int n=0)value=n;MA *
32、ta,tb;其中MA类的对象名标识符是(tb )。AAtb02|12|1|1AA用来派生新类的称为(基类),而派生出的新类称为它的子类或派生 类。AA基类02|12|1|1AA面向对象的程序设计的主要特征是继承性、封装性和多态性。AA封装性02|10|1|1AA向对象的模型中,最基本的概念是对象和(类)。AA类03|14|1|1aa通过使用new和delete两个运算符进行的分配为静态存储分配。(AAF 03|14|1|1AA 重载的运算符保持其原有的操作符个数、 优先级和结合性不变。( )AAT03|10|1|1AA 在面向对象方法中,类之间共享属性和操作的机制称为 多态 性 。 ()AAF
33、03|12|1|1aa可以用的形式访问派生类对象P的基类成员a,其中a是公有继承的公有 成员。( )AATAAC + +语言相对于C语言的最根本的变化是引进了类和对象的概念。 ()AAT03|10|1|1AA 类的析构函数的作用是删除类创建的对象。()AAT02|13|1|2aa动态分配内存空间操作符”ew”()使用时必须成对出现。AAdelete02|12|1|2AA 用以说明类中保护成员的关键字是 ()。AAprotected02|11|1|2AA 对于任意一个类,析构函数的个数最多为 ()个 。AA102|08|1|2AA 若有以下定义语句:Struct dataint i ;char;
34、double f ;b;则结构体变量占用的内存字节数是()0 3|02|1|2AA分号是C+语句的必要组成部分。()AAT0 3|12|2|2AA公有派生时,基类中所有成员在公有派生类中保持各个成员的访问权限。()AAy0 4|12|2|2aa下列程序中横线处正确的语句应该是 。# include<>using n amespace std;class Basepublic;void fun()cout< < Base : : fun” < < endl;class Derived : public Basepublic:void fun()计3个函数分别完成复数的加法、减法运算。编写主函数验证复数的运算是否正确。aa #include <>struct complfloat real;float com;compl add(compl c1,compl c2)compl t ;=+;=+;return t;compl sub(compl c1,compl c2)compl t;= = t;compl input(void) compl c;cout<<" 输入复数的实部和虚部 :" cin>>>>return c;v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋租赁合同的担保合同
- 商砼购销的合同
- 采购合同的主要类型
- 物流公司承运合同
- 网络营销执行作业指导书
- 平面设计软件应用作业指导书
- 公司给员工的劳动合同
- 2025年南京货运从业资格证500道题目答案大全
- 电力分配合同(2篇)
- 2024-2025学年高中英语课时分层作业3含解析新人教版选修9
- DB4420-T 7-2021 养老机构突发传染病疫情防控规范
- 四年级上册100道口算题大全(通用版各类)
- 四川省成都市2023年中考数学真题卷+答案
- 电阻焊点焊标准参考七所提供资料
- 诫子书教案一等奖诫子书教案
- 浅析音乐课堂中如何培养核心素养 论文
- 最全螺栓扭矩表(各种标准)
- 电力安全工作规程(电网建设部分)2023年
- 呆死帐的发生与预防课件
- 10000中国普通人名大全
- 导数常见函数图像
评论
0/150
提交评论