欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    最新c++练习题(带答案).doc

    • 资源ID:33805797       资源大小:181KB        全文页数:45页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    最新c++练习题(带答案).doc

    精品资料c+练习题(带答案).c+练习题(带答案)c+练习题(带答案)一、选择题1. C+语言属于( C )。A) 自然语言 B) 机器语言 C)面向对象语言 D) 汇编语言2. 下面选项中不属于面向对象程序设计特征的是(C) 。A)继承性 B)多态性 C)相似性 D)封装性3. 可用作C+语言用户标识符的一组标识符是( B )。A) void define +WORD B) a3_b3 _123 YNC) for -abc CaseD) 2a DO sizeof4. 假定一个二维数组的定义语句为“int a34=3,4,2,8,6;”,则元素a21的值为(A)。A) 0 B) 4 C) 8 D) 65. 下列情况中,哪一种情况不会调用拷贝构造函数 ( B )A)用派生类的对象去初始化基类对象时B)将类的一个对象赋值给该类的另一个对象时C)函数的形参是类的对象,调用函数进行形参和实参结合时D)函数的返回值是类的对象,函数执行返回调用者时6. 以下哪一关键字可用于重载函数的区分( C )A)externB)staticC)constD)virtual7. 下列有关数组的叙述中,正确的是( B )A)C+中数组的存储方式为列优先存储B)数组名可以作为实参赋值给指针类型的形参C)数组下标索引从1开始,至数组长度n结束D)数组指针的语法形式为:类型名 *数组名下标表达式;8. 下列有关继承和派生的叙述中,正确的是( C )A)派生类不能访问通过私有继承的基类的保护成员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)this指针是指向类的函数成员的指针12. 在下列关于C+函数的叙述中,正确的是( C )A)每个函数至少要有一个参数B)每个函数都必须返回一个值C)函数在被调用之前必须先声明D)函数不能自己调用自己13. 下列运算符中,不能重载的是 ( C )A)&&B)!=C).D)->14. 下面程序的输出结果是( 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;A)13B)14C)15D)1615. 下面的程序段的运行结果为( D )char str = "job", *p = str;cout << *(p+2) << endl;A)98 B)无输出结果 C)字符b的地址 D)字符b16. 下面程序的输出结果是( C )#include <iostream>using namespace std;class A public: A (int i) x = i; void dispa () cout << x << “,”; private : int x ;class B : public A public: B(int i) : A(i+10) x = i; void dispb() dispa(); cout << x << endl; private : int x ;void main()B b(2);b.dispb();A)10,2B)12,10C)12,2D)2,217. 下面程序的输出结果是( C )#include <iostream>using namespace std;class Base public: Base(int i) cout << i; Base () ;class Base1: virtual public Base public: Base1(int i, int j=0) : Base(j) cout << i; Base1() ;class Base2: virtual public Base public: Base2(int i, int j=0) : Base(j) cout << i; Base2() ;class Derived : public Base2, public Base1 public: Derived(int a, int b, int c, int d) : 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); A)134122B)123412C)14302012D)14321218. 下面程序的输出结果是( C )#include <iostream>using namespace std;class Base public: virtual void f() cout << “f0+”; void g() cout << “g0+”; ;class Derived : public Base public: void f() cout << “f+”; void g() cout << “g+”; ;void main() Derived d; Base *p = &d; p->f(); p->g(); A)f+g+B)f0+g+C)f+g0+D)f0+g0+19. 下面程序的输出结果是( C )#include <iostream>using namespace std;class Samplefriend long fun (Sample s) if (s.x < 2) return 1; return s.x * fun(Sample(s.x-1); 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)10D)3420. 以下程序的输出结果是:(D )#include <iostream>using namespace std;int fun(char *s) char *p=s;while (*p!='0') p+;return (p-s);void main()cout<<fun("abc")<<endl;A0 B. 1 C. 2 D. 321. 有如下程序段:int i=1;while(1)i+;if (i=10) break;if(i%2=0) cout<<*;执行这个程序段输出字符*的个数是(C)A. 10 B. 3 C. 4 D.522. 下列关于虚基类的描述中,错误的是(C)A.使用虚基类可以消除由多继承产生的二义性B.构造派生类对象时,虚基类的构造函数只被调用一次C.声明 class B:virtual public A 说明类B为虚基类D.建立派生类对象时,首先调用虚基类的构造函数23. 有下类定义Class A Char *a;Public:A():a(0)A(char *aa) /把aa所指字符串拷贝到a所指向的存储空间A=_;Strcpy(a,aa);A() delete a;正确的选择是(A)A. new charstrlen(aa)+1 B. charstrlen(aa)+1C. charstrlen(aa) D. new charsizeof(aa)-124. 假定AA为一个类,a为该类私有的数据成员,GetValue( )为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为( X )。A) x.a B) x.a() C) x->GetValue() D) x.GetValue( )25. 假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为( A )。A) int AA:a( ) B) int AA:a() C) AA:a() D) AA:int a()26. 有如下程序:#include<iostream> using namespace std;class Testpublic:Test() Test()cout<<'#'int main()Test temp2, *pTemp2; return 0;执行这个程序输出星号(#)的个数为(B )。A)1 B)2 C)3 D)427. 有如下程序:#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;return 0;运行时的输出结果是( A)。A)1123444 B)11114444 C)121444 D)1131444428. 有如下程序: #include <iostream>using namespace std;class point public: 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<<point:number; 程序结果为(A) A)3 B)4 C)6 D)729. 友元运算符obj+被C+编译器解释为( D )。 A. operator+(obj) B. operator+(obj,0)B. obj.operator+( ) D. obj.operator+(0)二、程序填空1用递归法求从1到n的立方和:f(1)=1 (n=1)f(n)=f(n-1)+n3 (n>1)#include <iostream>using namespace std;int f(int);int main()int n,s; cout<<"input the number n:" cin>>n; s= f(n) ; cout<<"The result is "<<s<<endl; return 0; int f(int n) /递归法求立方和函数 if ( n=1 ) return 1; else return ( f(n-1)+n*n*n );3. 请将下列程序补充完整,使得输出结果为“Destructor Derived Destructor Base”。#include <iostream>using namespace std;class Base public: virtual Base () cout << “Destructor Base”<< endl; ;class Derived : public Base public: Derived() cout << “Destructor Derived” << endl; ;void main () Base *pBase = new Derived; delete pBase ; 三、阅读程序,写出运行结果1.#include<iostream>#include<cstring>using namespace std; class CD char name20; int number;public: void Init(char* aa, int bb) strcpy(name,aa); number=bb; char* Getname () return name; int Getnumber () return number; void Output() cout<< name <<' '<< number <<endl; CD dx;void main()CD dy;dx.Init("歌唱祖国",30);dy.Init("义勇军进行曲",3*dx.Getnumber ()+5);dx.Output();dy.Output();歌唱祖国 30义勇军进行曲 952#include <iostream> using namespace 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 constructorn" 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作为参数传递,在主函数调用该函数并输出结果。2、编写函数找出二维数组(5*4)中元素的最大值与最小值,并返回其最大值与最小值。测试结果。3、编写一个三角形类,有计算面积,显示面积的功能等,并测试。要求有参数的构造函数及复制构造函数下面关于类概念的描述中,( D )是错误的。A)类是抽象数据类型的实现 B)类是具有共同行为的若干对象的统一描述体C)类是创建对象的样板 D)类就是C语言中的结构体类型D面向对象程序设计思想的主要特征中不包括 ( D ) 。A)封装性 B)多态性 C)继承性 D)功能分解,逐步求精D01|11|1|1在C+中,函数原型不能标识 ( ) 。A)函数的返回类型 B)函数参数的个数 C)函数参数类型 D)函数的功能D01|11|1|1 有关析构函数的说法不正确的是 ( )。A) 析构函数有且仅有一个 B) 析构函数和构造函数一样可以有形参C) 析构函数的功能是用来释放一个对象 D) 析构函数无任何函数类型B01|11|2|1已知X类.则当程序执行到语句,X  array3;时,调用了(D )次构造函数。A)0 B)1 C)2 D)3D01|13|1|1类定义的内容允许被其他对象无限制地存取是( C )。A)private 部分 B)protected 部分 C)public 部分 D)以上都不对C01|01|2|1关于new运算符的下列描述中,( D )是错误的.。A) 它可以用来动态创建对象和对象数组B) 使用它创建对象或对象数组,可以使用运算符DELETE删除C) 使用它创建对象时要调用构造函数D) 使用它调用对象数组时不许指定初始值D01|01|2|1对于下面程序段,表达式正确的是( B )。class Base public:int b;class Base1:public base ;class Base2:public base ;class Derived:public base1,public base2public:int fun ( );Derived d;A) d. Base1:b B)d. Base :b C) d.b D) d. Base : fun( )B01|12|1|1可以用p.a的形式访问派生类对象p 的基类成员a其中a是( D )。A)私有继承的公有成员B)公有继承的私有成员C)公有继承的保护成员D)公有继承的公有成员D下列关于C+类的描述中错误的是 ( C ) 。A)类与类之间可以通过一些手段进行通信和联络 B)类用于描述事物的属性和对事物的操作C)类与类之间必须是平等的关系,D)类与类之间可以通过封装而具有明确的独立性C01|12|1|1下列描述中哪个是正确的( B )。 A)私有派生的子类无法访问父类的成员 B)类A的私有派生子类的派生类C无法初始化其祖先类A对象的属性,因为类A的成员对类C是不可访问的 C)私有派生类不能作为基类派生子类 D)私有派生类的所有子孙类将无法继续继承该类的成员B01|11|1|1下列关于构造函数说法不正确的是( )。 A)构造函数必须与类同名 B)构造函数可以省略不写 C)构造函数必须有返回值 D)在构造函数中可以对类中的成员进行初始化C01|13|1|1如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是( D )。 A)一元运算符 B)二元运算符C)选项A)和选项B)都可能 D)重载错误D01|14|1|1在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是( D )。 A)一元成员运算符 B)二元成员运算符 C)一元友元运算符 D)选项B)和选项C)都可能D01|12|1|1一个类的友元函数能够访问该类的( D )。 A)私有成员 B)保护成员 C)公有成员 D)所有成员D下列关于类定义的说法中,正确的是( A )。A)类定义中包括数据成员和函数成员的声明B)类成员的缺省访问权限是保护的C) 数据成员必须被声明为私有的D)成员函数只能在类体外进行定义A01|14|1|1通过运算符重载,可以改变运算符原有的( A )。A)操作数类型B)操作数个数C)优先级D)结合性A01|14|1|1在C+语言中,数据封装要解决的问题是( D )。A) 数据的规范化 B)便于数据转换 C)避免数据丢失 D)防止不同模块之间数据的非法访问D01|13|1|1对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( D )。A)公有类型 B)私有类型 C)保护类型 D)友元类型D01|11|1|1在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是( C )。A)友元函数 B)虚函数 C)构造函数 D) 析构函数C01|11|1|1类的析构函数的作用是( D )。A)一般成员函数的初始化 B)类的初始化C)对象的初始化 D)删除类创建的对象D01|13|1|1下列说法正确的是( B )。A)内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B) 内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C)类的内联函数必须在类体内定义D)类的内联函数必须在类体外通过加关键字inline定义B01|12|1|1下列对派生类的描述中,错误的是( D )。 A)一个派生类可以作为另一个派生类的基类B) 派生类至少有一个基类C)派生类的成员除了自己的成员外,还包含了它的基类的成员D)派生类中继承的基类成员的访问权限到派生类保持不变D01|12|1|1运算符的重载是对已有的运算符赋予多重含义,因此( A )。A)可以对基本类型(如int 类型)的数据,重新定义“+”运算符的含义B) 可以改变一个已有运算符的优先级和操作数个数C)只能重载C+中已经有的运算符,不能定义新运算符D)C+中已经有的所有运算符都可以重载A01|13|1|1如果类A被说明成类B的友元,则( D )。A)类A 的成员即是类B的成员 B) 类B的成员即是类A的成员 C)类A的成员函数不得访问类B的成员 D)类B不一定是类A的友元D01|13|1|1不能作为重载函数的调用的依据是( D )。A)参数的个数 B) 参数的类型C)函数的类型 D)函数的名称D01|13|1|1在C+语言的面向对象设计框架中, 类 是程序的基本组成单元。类01|13|1|1继承的方式的公有继承、私有继承和保护继承三种。保护继承01|13|1|1·在用class定义一个类时,数据成员函数的默认访问权限是私有的 )。私有的01|13|1|1类的构造函数是在定义对象时调用的。定义对象01|13|1|1类模板的使用实际上是将类模板实例化成一个具体的( 对象 )。对象01|13|1|1如果类B继承了类A,则称类A为类B的基类,类 B 称为类A 的( 派生类 )。派生类01|13|1|1如果要把返回值为void的函数A声明为B类的友元数,则应在类B的定义中加入语句是( 12 )。02|10|1|1有如下定义: class MAint value;public:MA(int n=0)value=n;MA *ta,tb;其中MA类的对象名标识符是 ( tb ) 。tb02|12|1|1用来派生新类的称为 ( 基类 ),而派生出的新类称为它的子类或派生类。 基类02|12|1|1面向对象的程序设计的主要特征是继承性、封装性和多态性。封装性02|10|1|1向对象的模型中,最基本的概念是对象和 ( 类) 。类03|14|1|1通过使用new和delete两个运算符进行的分配为静态存储分配。( )F03|14|1|1重载的运算符保持其原有的操作符个数、优先级和结合性不变。( )T03|10|1|1在面向对象方法中,类之间共享属性和操作的机制称为 多态 性 。( )F03|12|1|1可以用p.a的形式访问派生类对象P的基类成员a,其中a是公有继承的公有成员。( )TC+语言相对于C语言的最根本的变化是引进了类和对象的概念。( )T03|10|1|1类的析构函数的作用是删除类创建的对象。( )T02|13|1|2动态分配内存空间操作符”new”和( )使用时必须成对出现。delete02|12|1|2用以说明类中保护成员的关键字是( )。protected02|11|1|2对于任意一个类,析构函数的个数最多为( )个 。102|08|1|2若有以下定义语句: Struct dataint i ;char;double f ;b;则结构体变量占用的内存字节数是( )。3.14*r*r03|02|1|2分号是C+语句的必要组成部分。 ( )T03|12|2|2公有派生时,基类中所有成员在公有派生类中保持各个成员的访问权限。( )T04|12|2|2下列程序中横线处正确的语句应该是 。include<iostream.h>using namespace std;class Base public;void fun( )cout< < “Base : : fun” < < endl;class Derived : public Basepublic:void fun( )_/显示调用基类的函数fun( )cout < < “Derived : : fun” < < endl;004|11|2|2写出下列程序的运行结果 。#include <iostream.h> class A public: A()cout<<"1" A()cout<<"2" ;class B:public A public: B()cout<<"3" B()cout<<"4" ;void main() B b; 132404|09|2|2 下列程序的执行结果为 。include<iostream.h>void mian() int n=10; int* pn=&n; int* &rn=pn; (*pn)+; cout<<"n="<<n<<endl; (*rn)+; cout<<”n=”<<n<<endl;n=11 n=1205|08|2|2定义描述复数的结构体变量,并实现复数的输入和输出.设计3个函数分别完成复数的加法、减法运算。编写主函数验证复数的运算是否正确。#include <iostream.h>struct compl float real; float com;compl add(compl c1,compl c2) compl t ;t.real=c1.real+c2.real;=+;return t;compl sub(compl c1,compl c2)compl t;t.real=c1.real-c2.real; =-;return t; compl input(void) compl c;cout<<"输入复数的实部和虚部:"cin>>c.real>>return c;void output(compl c) cout<<"复数的实部:" <<c.real<<"复数的虚部:"<<<<endl;void main()compl c1,c2,c3,c4,c5;c1=input();c2=input();c3=add(c1,c2);c4=sub(c1,c2);cout<<"c1:"output(c1);cout<<"c2:"output(c2);cout<<"二复数之和:"output(c3);cout<<"二复数之差:"output(c4);05|04|2|2用循环语句实现输出如下图形: * * * * * * * * * * * * * * * * * * *#include <iostream.h>void main() int i,j,k;for(i=1;i<=4;i+)for(j=0 ;j<=i-1;j+)cout<<" "for(j=1;j<=5;j+)cout<<"* " cout<<'n'05|10|2|2设计一个立方体类Box,它能计算并输出立方体的体积和表面积。解: Box类包含三个私有数据成员a(立方体边长)、volume(体积)和area(表面积),另有两个构造函数以及seta()(设置立方体边长)、getvolume()(计算体积)、getarea()(计算表面积)和disp()(输出结果)。 本题程序如下:#include<iostream.h> class Box float a; float volume; float area; public: Box() Box(float r)a=r; void seta(float r)a=r; void getvolume()volume=a*a*a; void getarea()area=6*a*a; void disp() cout<<"体积:"<<volume<<",表面积:"<<area<<endl; ; void main() Box obj1(4.5),obj2; obj2.seta(6.4); obj1.getvolume();

    注意事项

    本文(最新c++练习题(带答案).doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开