在线考试系统c++题库填空题.doc
《在线考试系统c++题库填空题.doc》由会员分享,可在线阅读,更多相关《在线考试系统c++题库填空题.doc(39页珍藏版)》请在三一办公上搜索。
1、 二、填空题1、设有定义语句:int a=12;,则表达式a*=2+3的运算结果是_。 答案: 60根据运算的优先级和结合性,可以将表达式的计算顺序规则总结为以下3条:(1)优先计算带有括号的子表达式。(2)在没有括号的部分,依照运算优先级,由高到低进行计算。(3)具有相同优先级的运算符,按照结合性规定,依次进行计算。本题中*=的结合性是右结合,所以表达式a*=2+3相当于a=a*(2+3),所以a=60。知识点:C+部分/数据类型、表达式和基本运算/掌握C+运算符的种类、运算优先级和结合性2、从实现的角度划分,C+所支持的两种多态性分别是_时的多态性和运行时的多态性。答案: 编译在C+语言中
2、,多态性可分为两类:编译时的多态性和运行时的多态性。编译时的多态性是通过函数重载和模板体现的。运行时的多态性是通过虚函数体现的。 知识点:C+部分/了解多态性概念/虚函数机制的要点_3、将一个函数声明为一个类的友元函数必须使用关键字_。答案: friend友元函数不是当前类的成员函数,而是独立于当前类的外部函数(包括普通函数和其他类的成员函数),但它可以访问该类的所有对象的成员,包括私有成员、保护成员和公有成员。友元函数要在类定义时声明,声明时要在其函数名前加上关键字friend。该声明可以放在公有部分,也可以放在私有部分。友元函数的定义既可以在类A(aa),c(aa+1)#c(aa+1),A
3、(aa)本题主要考查了类对基类及成员类的初始化。在类的构造函数中,要对类的基 1类及成员类进行初始化,可在构造函数后面加上初始化列表,函数与初始化列表间用冒号隔开,列表间各项用逗号隔开。要对基类进行初始化,可用形如:类名(初始化参数)的方式,要对内部对象初始化,可用形如:对象名(初始化参数)的方式。知识点:C+部分/熟练掌握类与对象的相关知识/构造函数与析构函数5、下列程序的输出结果是_。#include<iostream>using namespace std;int main()int i=5;int &r=i;r=7;cout<<i<<endl
4、;return 0;答案: 7本题主要考查了引用的概念,引用实质上是为变量取一个别名,因为系统不会为引用变量所代表的数据对象再次分配空间。本题中引用变量r与它所代表的数据对象i共用一个存储空间,所以所有对r的操作就是对i的操作,故本题在执行r=7后,i的值也就是7。知识点:C+部分/C+的基本语句/掌握C+的基本语句6、下列程序的输出结果是_。#include<iostream>using namespace std;class Testpublic:Test()cnt+;Test()cnt-;static int Count()return cnt;private:static
5、int cnt;int Test:cnt=0;int main()cout<<Test:Count()<< ;Test t1,t2;Test*pT3=new Test;Test*pT4=new Test;cout<<Test:Count()<< ;delete pT4;2delete pT3;cout<<Test:Count()<<endl;return 0; 答案:0 4 2本题主要考查了类的静态成员的概念。在C+中可以用static关键字为类指定静态成员。静态成员为类的所有实例所共享。对于类中的静态函数,可以通过类名:
6、函数名的方法来调用,并且该函数只能访问类中的静态数据。对于静态int型数据,在编译时将会被初始化为0,故在main函数中第一句将会输出"0 ";在Test t1,t2;语句中将创建类的两个实例,一共调用了两次构造函数,故类的静态数据cnt将会执行两次自加运算,变为2,main中接下来的两条语句通过new方法也创建了该类的两个实例,此时cnt变为4,故第二次执行输出时将输出"4 ";接下来执行了两条delete语句,将销毁pT4,pT3所对应的实例,这将执行两次析构函数,故cnt的值将变为2,最后的一条输出语句将输出"2"(后面有回车)
7、。知识点:C+部分/熟练掌握类与对象的相关知识/对象和对象指针的定义与使用7、下面是用来计算n的阶乘的递归函数,请将该函数的定义补充完整。(注:阶乘的定义是n!=n*(n-1)*2*1)unsigned fact(unsigned n)if(n<=1)return 1;return _;答案:n*fact(n-1)#fact(n-1)*n注意到阶乘的定义,当n<=1时,n!=1;当n>1时,n!=n*(n-1)!,符合递归的定义,因此,本题答案为n*fact(n-1)。知识点:C+部分/掌握函数的有关使用/递归函数8、下列程序的输出结果是_。#include<iostr
8、eam>using namespace std;template<typename T>T fun(T a,T b) return(a<=b)?a:b; int main()cout<<fun(3,6)<<,<<fun(3.14F,6.28F)<<endl;return 0;答案: 3,3.14本题主要考查了模板的定义及使用。在C+中为了能够实现代码的重用,提供了模板机制。在本题中,定义了一个模板函数,其参数a,b及返回结果均为T类型。分 3析fun函数的可知,其功能是返回a,b中数值较小的数。在main函数中第一次调用f
9、un时,实际上是调用了int fun(int a,int b)这个函数,故返回3,第二次调用时,实质上是调用了函数float fun(float a,float b),返回值为一个浮点型数据3.14。 知识点:C+部分/掌握函数的有关使用/函数重载9、与成员访问表达式p->name等价的表达式是_。答案: (*p).namep->name实际上是批指针p所指结构的成员name,因此我们可以用*p来指定p所指的内容,其成员可用"."操作符实现,故为(*p).name,注意到"."的优先级要高于"*",故对*p要加上括号。知识
10、点:C+部分/数据类型、表达式和基本运算/熟练掌握C+表达式类型及求值规则10、下列程序的输出结果是_。#include<iostream>using namespace std;class basepublic:int n;base(int x) n=x;virtual void set(int m) n=m;cout<<n<< ;class deriveA:public basepublic:deriveA(int x):base(x) void set(int m) n+=m;cout<<n<< ;class deriveB:p
11、ublic basepublic:deriveB(int x):base(x) void set(int m) n+=m;cout<<n<< ;int main()deriveA d1(1);deriveB d2(3);base *pbase;pbase=&d1;pbase->set(1);pbase=&d2;pbase->set(2);return 0;4答案 2 5本题主要考查了C+中的虚拟函数及多态机制。在C+中可以用虚拟函数来实现运行时多态。本题中首先创建了两个对象d1、d2,其对应的类分别是deriveA与deriveB。在创建d1
12、,d2时,构造函数分别为它们设置了属性n的值为1,3。pbase为一个指向基类的指针,在将d1,d2的地址赋值给pbase后,调用pbase的指针成员将自动根据其所属的子类调用相应的成员函数,故本题输出应为"2 5 "。知识点:C+部分/熟练掌握类与对象的相关知识/对象和对象指针的定义与使用11、在C+面向对象程序设计框架中,_是程序的基本组成单元。 答案:类面向对象程序设计语言一般是以类为程序的组成单元,这是其与面向过程语言的主要区别。知识点:C+部分/C+语言概述/掌握C+程序的基本框架12、对于枚举类型的定义语句enum ColorBlue,Green=3,Black
13、,White=6,Red;其中枚举常量Red的值为_。答案: 1:7本题考查了枚举型的定义。一个enum类型实际上是int类型的一个子集,其每一个枚举值代表一个整数。当n个枚举型未被赋值时,他们自左至右依次为0,1,.,n-1,如果第i个枚举值为m,则其未赋值的后面枚举值分别是m+1,m+2.。所以本题答案是7。知识点:C+部分/数据类型、表达式和基本运算/掌握C+数据类型及其定义方法13、执行下面语句段后输出结果是_。int k=1,n=10,m=1;while(k<=n)m*=2;n-;k+;cout<<m<<endl;答案: 32本题考查的是循环结构。解题思
14、路是:这是一个由while控制的循环,循环变量k的初始值为1,循环条件为k<=n,在循环体中k的值每次增加1,n的值每次减少1,这样循环共进行5次,所以最后m的值为32。知识点:C+部分/C+的基本语句/用while语句实现循环结构14、执行下列语句后,输出的结果为_。void show()static int a=3;a+;cout<<a<<" "5int main()for(int i=0;i<2;i+)show();答案: 4 5本题考查了静态变量的用法。当函数执行完毕,返回调用点时,该变量并不撤消,其值将继续保留,若下次进入该函数
15、,其值仍然存在。故本题输出4 5。知识点:C+部分/掌握函数的有关使用/变量的作用域、生存周期和存储类别15、执行下列程序后输出的结果为_。#include<iostream>using namespace std;int x=5,4,3,2,1;int main()int i,*p,m=0;for(p=x,i=1;p+i<=x+4;i+)for(i=0;i<4;i+)m+=pi;cout<<m<<endl;return 0;答案: 14本题考查的是循环语句和数组、指针的结合。解题思路是:数组名实际上是一个指针常量存放数组的第一个元素的地址。本题
16、是一个二重循环,但实际上第一重循环只执行了一次。故本题答案是14。知识点:C+部分/数组、指针与引用 /指针与指针变量的概念,指针与地址运算符,指针与数组16、函数m(x,n) 计算并返回具有n个元素数组x中的最小元素的下标。请填空。 int m(int *x,int n)int i=0,j;for(j=0;j<n;j+)if(xj<xi)_;return i;答案:i=j;6本题考查的是基本算法。解题思路是:只是一个求小值下标的程序,先假设第一元素是最小的,然后分别与后面元素比较,如果其中一个更小,则把其下标赋给i。所以答案是i=j。知识点:C+部分/掌握函数的有关使用/函数的类
17、型和返回值17、非成员函数必须声明为类的_才能访问这个类的private成员。 答案: 1:友元函数本题考查的是友元函数。友元提供了不同类或对象的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。对于一个类可以利用friend将一般函数、其它类成员函数或者其它类声明为友元。友元的声明可以放在类的任何一个区域。但是友元的实现不可以在类 1:抽象类本题考查的是抽象类的概念。拥有纯虚函数的类成为抽象类。抽象类不能用来定义对象。如果一个抽象类的派生类没有重定义来自基类的某个纯虚函数,则该函数在派生类中仍是纯虚函数,该类仍为抽象类。知识点:C+部分/掌握类的继承与派生知识/虚基类19、已知in
18、t DBL(int n)return n+n;和long DBL(Long n)return n+n; 是一个函数模板的两个实例,则该函数模板的定义是_。答案: 1:YYtemplate<Class T>T DBL(T n)return n+n;本题考查的是函数模板的用法。声明一个函数模板的格式如下:template<模板形参表声明><函数声明>,模板函数的调用是可以省略实参模板的。但是实参模板的省略是有条件的。如果从模板函数实际参数列表获得的信息有矛盾,则不能省略实际参数模板。知识点:C+部分/模板/简单了解类模板的定义和使用方式20、表达式cout<
19、;<n还可以表示为:_。答案: 1:YYcout<<endl;本题考查的是输入输出流的概念。cout<<n表示输出一个换行符,与cout<<endl是同样的作用。知识点:C+部分/输入输出流/能够使用格式控制数据的输入输出21、写出执行完下列程序段以后指定的变量的值:bool x=true,y=false,z=false;x=x&&y|z;y=x|y&&z;z=!(x!=y)|(y=z);已知x=false,z=true,则y=_。 答案: false7本题考查的是逻辑变量的运算以及他们之间的优先级关系。C+语言提供了三
20、种逻辑运算符,它们是:!(逻辑非)、&&(逻辑与)、|(逻辑或)。其中!为单目运算符,&&和|为双目运算符。它们之间优先级从高到低依次为:!,&&,|。知识点:C+部分/数据类型、表达式和基本运算/掌握C+数据类型及其定义方法22、执行下列语句后,输出结果为_。int x=0,y=2,z=3;switch(x)case 0:switch(y)case 1:cout<<*;break;case 2:cout<<%;break;case 1:switch(z)case 1:cout<<$;break;case 2:
21、cout<<*;break;default:cout<<#;答案: %#本题考查的switch语句的使用。解题思路为:首先判断x的值,题中x的值为0然后判断y的值,y的值为2,所以先输出"%",而case 0后面没有break语句,所以再判断z的值,这样又输出"#"。 知识点:C+部分/C+的基本语句/用switch语句实现多分支选择结构23、 执行下列程序后,写出程序的输出结果_。#include<iostream>using namespace std;int main()int a=3;int &b=a;
22、b+;cout<<a<<endl;return 0; 答案: 4本题考查的是引用的使用。引用实际上是为一个为变量起个别名,其后对其的任何操作都相当于对原变量 8的操作。所以最后输出4。知识点:C+部分/数组、指针与引用 /引用的基本概念,引用的定义与使用24、下面程序的功能是将形参x的值转换为二进制数,所得二进制数的每一位数放在一维数组y中返回,二进制的最低位放在放在下标为0的元素中。请填空。 void f(int x,int y)int a=0,b;dob=x%_;ya+=b;x/=2;while(x);答案: 2本题考查的是二进制转换的基本算法。解题思路为:把十进制
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 在线 考试 系统 c+ 题库 填空

链接地址:https://www.31ppt.com/p-4123328.html