您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > c++试题和答案(学生)
一.填空1、#includeiostream.hUsingnamespacestd;intadd(inta,intb);intmain(){intx,y,sum;coutEntertwonumbers:'\n';//在下画线处填上语句,完成用cin读入x和ycinx;ciny;sum=add(x,y);coutThesumis:sum'\n';return0;}intadd(inta,intb){//在下画线处填上语句,完成计算a与b的和并返回之returna+b;}2、#includeiostream.hUsingnamespacestd;intmain(){charname[20];cout”Hello,yourname:”;//在下画线处填上语句,完成将字符串输入到数组name中cinname;//在下画线处填上语句,完成将name数组用cout输出coutnameendl;return0;}3#includeiostream.hUsingnamespacestd;intmul(intx,inty)//mul函数1{returnx*y;}intmul(intx,inty,intz)//mul函数2{returnx*y*z;}voidmain(){inta=3,b=4,c=5;//在下画线处填上语句,用于调用mul函数1couta'*'b'='mul(a,b)endl;//在下画线处填上语句,用于调用mul函数2couta'*'b'*'c'='mul(a,b,c)endl;}4#includeiostream.hUsingnamespacestd;main(){int*p;//声明一个整型指针变量p//在下画线处,用new关键字动态分配一个int型存储区,并将首地址赋给pp=newint;*p=10;cout*p;//在下画线处填上语句,用于撤销指针p,释放p指向的存储空间deletep;return0;}5#includeiostream.hmain(){int*p;//在画线处填上语句,用new关键字动态分配一个int型存储区,并将首地址赋给pp=newint;if(!p){coutallocationfailure\n;return1;}//在下画线处填上语句,将p所指向的存储区赋值20*p=20;cout*p;//在下画线处填上语句,用于撤销指针p,释放p指向的存储空间deletep;return0;}6下列程序的输出结果是7。#includeiostreamusingnamespacestd;intmain(){inti=5;int*p=&i;*p=7;coutiendl;return0;}(15也用了)7下面是用来计算n的阶乘的递归函数,请将该函数的定义补充完整。(注:阶乘的定义是n!=n*(n-1)*...*2*1)unsignedfact(unsignedn){if(n=1)return1;returnn*fact(n-1);}8与成员访问表达式p-name等价的表达式是(*P).name。9.UML的全称为UnifiedModelingLanguage,统一建模语言。10.UML中有结构事物,动作事物,分组事物,注释事物四种类型事物。11.UML中的四种关系为依赖,关联,泛化,实现。12.类Sample的构造函数将形参data赋值给数据成员data。请将类定义补充完整。classSample{public:Sample(intdata=0);Private:Intdata;};Sample::Sample(intdata){【this-data=data;】}(13)若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为【double】。(14)有如下循环语句:For(inti=50;i20;i-=2)couti',';运行时循环体的执行次数是【15】。(15)利用表达式a[i]可以访问int型数组a中下标为i的元素。在执行了语句int*p=a;后,利用指针p也可访问该元素,相应的表达式是【*(p+i)】。(16)下面是一个递归函数,其功能是使数组中的元素反序排列。请将函数补充完整。voidreverse(int*a,intsize){if(size2)return;intk=a[0];a[0]=a[size-1];a[size-1]=k;reverse(a+1,size-1);}(17)有如下类定义:classSample{public:Sample();~Sample();Private:Staticintdate;};将静态数据成员data初始化为0的语句是【intSample::data=0;】(18)“图形”类Shape中定义了纯虚函数CalArea(),“三角形”类Triangle继承了类Shape,请将Triangle类中的CalArea函数补充完整。classShape{public:virtualintCalArea()=0;}classTriangle:publicShape{public:Triangle{ints,inth}:side(s),height(h){}intCalArea(intside,intheight){returnside*height/2;}private:intside;intheight;};(19)UML的定义包括UML语义和UML表示法。(20)观看以下程序:classpoint{public:voidshow(){cout”point”endl;}};voidmain(){pointp1;point*p;p=&p1;p1.show();______________//通过对象p1访问show函数p-show();//通过指针p访问show函数}21、在C++类中可以包含___公有___________、___私有___________和_____保护_________三种具有不同访问控制权的成员。22、定义类时,在类头中将使用关键字____class_________来表示类定义的开始。如果一个类中至少有一个纯虚函数,则该类称为______抽象类__________。23、C++类的组成包括数据成员和______成员函数________,友元_____不是(是、不是)该类的成员函数。24、友员函数是用关键字______friend______修饰的非成员函数。25、若有:inti;int&j=i;i=10;j=i+1;则i=11,j=11。26、new的功能是动态申请内存空间,delete的功能是释放由new申请的空间。二.选择题1建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数),这3种构造函数的调用顺序为()AabcBacbCcabDcba答案:A2下面描述中,符合结构化程序设计风格的是(A)A)使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B)模块只有一个入口,可以有多个出口C)注重提高程序的执行效率D)不使用goto语句3下面概念中,不属于面向对象方法的是(D)A)对象B)继承C)类D)过程调用4关于面向对象的程序设计方法,下列说法正确的是(D)A)“封装性”指的是将不同类型的相关数据组合在一起,作为一个整体进行处理B)“多态性”指的是对象的状态会根据运行时要求自动变化C)基类的私有成员在派生类的对象中不可访问,也不占内存空间D)在面向对象的程序设计中,结构化程序设计方法仍有着重要作用5判断字符型变量ch是否为大写英文字母,应使用表达式(D)A)ch='A'&ch='Z'B)ch='A'||ch='Z'C)'A'=ch='Z'D)ch='A'&&ch='Z'6已知下列语句中的x和y都是int型变量,其中错误的语句(C)A)x=y++;B)x=++y;C)(x+y)++;D)++x=y;7执行语句序列(D)intn;cinn;switch(n){case1:case2:cout'1';case3:case4:cout'2';break;default:cout'3';}时,若键盘输入1,则屏幕显示A)1B)2C)3D)128关于动态存储分配,下列说法正确的是(B)A)new和delete是C++语言中专门用于动态内存分配和释放的函数B)动态分配的内存空间也可以被初始化C)当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间D)当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new9)对类的构造函数和析构函数描述正确的是(A)A构造函数可以重载,析构函数不能重载B构造函数不可以重载,析构函数可以重载C构造函数可以重载,析构函数也可以重载D构造函数不能重载,析构函数也不能重载(10)下列程序的输出结果是(A)#includeiostreamusingnamespacestd;intmain(){chara[]=Hello,World;char*ptr=a;while(*ptr){if(*ptr='a'&&*ptr='z')coutchar(*ptr+'A'-'a');elsecout*ptr;ptr++;}return0;}A)HELLO,WORLDB)Hello,WorldC)hELLO,wORLDD)hello,world11)已知:intm=10;在下列定义引用的语句中,正确的是(A)A)int&x=m;B)inty=&m;C)int&z;D)int&t=&m;(17)下列函数原型声明中错误的是(D)A)voidFun(intx=0,inty=0);B)voidFun(intx,inty);C)voidFun(intx,inty=0);D)voidFun(intx=0,inty);(12)已知程序中已经定义了函数test,其原型是inttest(int,int,int);,则下列重载形式中正确的是(B)A)chartest(int,int,int);B)doubletest(int,int,double);C)inttest(int,int,int=0);D)floattest(int,int,float=3.5F);(13)已知函数f的原型是:voidf(int*a,long&b);变量v1、v2的定义是:intv1;longv2;,正确的调用语句是(C)A)f(v1,&v2);B)f(v1,v2);C)f(&v1,v2);D)f(&v1,&v2);(14)有以下类定义classMyClass{public:MyClass(){cout1;}};则执行语句MyClassa,b[2],*p[2];后,程序的输出结果是(B)A)11B)111C)1111D)11111(15)关于动态存储分配,下列说法正确的是(B)A)new和delete是C++语言中专门用于动态内存分配和释放的函数B)动态分配的内存空间也可以被初始化C)当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间D)当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new(16)关于友元,下列说法错误的是(A)A)如果类A是类B的友元,那么类B也是类A的友元B)如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员C)友元关系不能被继承D)如果类A是类B的友元,那么类A的所有成员函数都是类B的友元(17)在公有派生的情况下,派生类中定义的成员函数只能访问原基类的(C)A)公有成员和私有成员B)私有成员和保护成员C)公有成员和保护成员D)私有成员、保护成员和公有成员(18)在C++中用来实现运行时多态性的是(D)A)重载函数B)析构函数C)构造
本文标题:c++试题和答案(学生)
链接地址:https://www.777doc.com/doc-2901775 .html