1、试卷编号:8744所属语言:C+所属方案:C+期末考试-批次1第1题判 断(1分)(题号:703)调用系统函数时,要先将该系统函数的原型说明所在的头文件包含进去.答案:Y第2题判 断(1分)(题号:661)运算符重载的形式有两种:成员函数形式和友元形式.答案:Y第3题判 断(1分)(题号:642)设置和清除格式标志字的成员函数需要通过对象来引用它们,输出显示格式的对象通常是cout.答案:Y第4题判 断(1分)(题号:663)具有纯虚函数的类是抽象类,它的特点是不可以定义对象.答案:Y第5题判 断(1分)(题号:600)对象成员的表示与结构变量成员的表示相同,使用运算符.或-.答案:Y第1题单
2、项选择(1分)(题号:1382)关于虚函数的描述中,( )是正确的.A:虚函数是一个静态类型的成员B:虚函数是一个非成员函数C:基类中说明了虚函数之后,派生类中将其对应的函数可不必说明为虚函数D:派生类的虚函数与基类的虚函数具有不同的参数个数和类型答案:C第2题单项选择(1分)(题号:378)下列关于运算符重载的描述中,( )是正确的.A:运算符重载可以改变操作符的个数B:运算符重载可以改变优先级C:运算符重载可以改变结合性D:运算符重载不可以改变语法结构答案:D第3题单项选择(1分)(题号:1448)下列的标识符中,( )是文件级作用域的.A:函数形参B:语句标号C:外部静态类标识符D:自动
3、类标识符答案:C第4题单项选择(1分)(题号:1456)下列有关对函数模板参数的描述,错误的是( ).A:模板参数可以是一个或多个B:通常每个模板参数前必须加classC:模板参数是一个算术表达式D:模板参数是参数化的类型答案:C第5题单项选择(1分)(题号:711)下列关于面向对象语言的基本要素的描述中,正确的是( ).A:封装性和重载性B:多态性和继承性C:继承性和聚合性D:封装性和继承性答案:D第6题单项选择(1分)(题号:1442)在函数的返回值类型与返回值表达式的类型的描述中,( )是错误的.A:函数返回值的类型是在定义函数时确定,在函数调用时是不能改变的B:函数返回值的类型就是返回
4、值表达式的类型C:函数返回值表达式类型与函数返回值类型不同时,表达式类型应转换成函数返回值类型D:函数返回值类型决定了返回值表达式的类型答案:B第7题单项选择(1分)(题号:1402)关于子类型的描述中,( )是错误的.A:子类型就是指派生类是基类的子类型B:一种类型当它至少提供了另一种类型的行为,则这种类型是另一种类型的子类型C:在公有继承下,派生类是基类的子类型D:子类型关系是不可逆的答案:A第8题单项选择(1分)(题号:1387)已知:int a,*pa=&a;输出指针pa十进制的地址值的方法是( ).A:coutpa;B:cout*pa;C:cout&pa;D:coutp=5C:A1.
5、*p=5D:*A1.p=5答案:C第10题单项选择(1分)(题号:729)在int a=3,*p=&a;中,*p的值是( ).A:变量a 的地址值B:无意义C:变量p的地址值D:3答案:D第11题单项选择(1分)(题号:1440)当一个函数无返回值时,定义它时函数的类型应是( ).A:voidB:任意C:intD:无答案:A第12题单项选择(1分)(题号:1446)在C+语言中,关于下列设置参数默认值的描述中,( )是正确的.A:不允许设置参数的默认值B:设置参数默认值只能在定义函数时设置C:设置参数默认值时,应该是先设置右边的再设置左边的D:设置参数默认值时,应该全部参数都设置答案:C第13
6、题单项选择(1分)(题号:739)下列表达式中,( )是非法的.已知:int a=5;float b=5.5;A:a%3+bB:b*b&+aC:(ab)+(int(b)%2)D:-a+b答案:D第14题单项选择(1分)(题号:1437)下述关于break 语句的描述中,( )是不正确的.A:break 语句可用于循环体内,它将退出该重循环B:break 语句可用于开关语句中,它将退出开关语句C:break 语句可用于if 体内,它将退出if 语句D:break 语句在一个循环体内可以出现多次答案:C第15题单项选择(1分)(题号:1450)下列标识符中,( )不是局部变量.A:register
7、 类B:外部static 类C:auto 类D:函数形参答案:B第16题单项选择(1分)(题号:728)在对字符数组进行初始化时,( )是正确的.A:char s1=abcd;B:char s23=xyz;C:char s33=a,x,y ;D:char s423= xyz,mnp答案:A第17题单项选择(1分)(题号:1406)在带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化( ).A:与虚基类下面的派生类个数有关B:多次C:二次D:一次答案:D第18题单项选择(1分)(题号:1432)下列do-while 已知:循环的循环次数为( )
8、.已知 int i(5); do cout i-endl; i-; while (i!=0);A:0B:1C:5D:无限答案:D第19题单项选择(1分)(题号:714)下面关于对象概念的描述中,( )是错误的.A:对象就是C 语言中的结构变量B:对象代表着正在创建的系统中的一个实体C:对象是一个状态和操作(或方法)的封装体D:对象之间的信息传递是通过消息进行的答案:A第20题单项选择(1分)(题号:1433)下列for 循环的循环体执行次数为( ).for( int i(0),j(10); i=j=10; i+,j-)A:0B:1C:10D:无限答案:D第1题WINDOWS操作(15分)(题号
9、:9)- 请在打开的窗口中,进行下列操作,完成所有操作后,请关闭窗口。-1:将文件夹“tk”剪切到文件夹“tw”内。 2:将文件夹“tk”改名为“tkk”。 3:将文件夹“tr”复制到文件夹“tw”内。 4:在文件夹“tw”文件夹内新建一个名为“lh”的Word文档,并把Word文档 “lh”复制到此目录下的文件夹“tr”内。第1题程序填空(10分)(题号:48)/*-【程序填空】-题目:设置Area()函数是虚函数,实现动态联编。-*/#include class Pointpublic:Point(double i,double j)x=i;y=j;/*SPACE*/【?】double A
10、rea() constreturn 0.0;private:double x,y;/*SPACE*/class Rectangle:【?】public:Rectangle(double i,double j,double k,double l);double Area() constreturn w*h;private:double w,h;/*SPACE*/Rectangle:Rectangle(double i,double j,double k,double l):【?】w=k;h=l;/*SPACE*/void fun(Point 【?】)couts.Area()endl;void m
11、ain()Rectangle rec(3.0,5.2,15.0,25.0);fun(rec);答案: 1). virtual 2). public Point 3). Point(i,j) 4). &s第2题程序填空(10分)(题号:332)/*-【程序填空】-题目:以下程序的功能是产生并输出杨辉三角的前七行。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1-*/#includevoid main ( )/*SPACE*/【?】; int i,j,k; for (i=0;i7;i+)/*SPACE*/ ai0=1; 【?
12、】; for (i=2;i7;i+) for (j=1;ji;j+)/*SPACE*/ aij=【?】; for (i=0;i7;i+) /*SPACE*/ for (j=0;【?】;j+) coutaij; coutendl; 答案: 1). int a77 或 int a1010 或 int a88 或 int a99 2). aii=1 3). ai-1j-1+ai-1j 或 ai-1j+ai-1j-1 4). j=j 或 jj第1题程序改错(10分)(题号:61)/*-【程序改错】-题目:利用友元函数,将运算符重载为类的成员函数,实现类 的两个对象的相加运算。-注意:不可以增加或删除程
13、序行,也不可以更改程序的结构。-*/#includeclass sampleprivate:int x;public:sample()sample(int a)x=a;void disp()coutx=xendl;/*FOUND*/friend sample operator+(sample &s);/*FOUND*/sample sample:operator+(sample &s1,sample &s2)/*FOUND*/return (s1+s2);void main()sample obj1(10);sample obj2(20);sample obj3;obj3=obj1+obj2;
14、/*FOUND*/disp();答案: 1). friend sample operator+(sample &s1,sample &s2); 2). sample operator+(sample &s1,sample &s2) 3). return(s1.x+s2.x); 4). obj3.disp();第2题程序改错(10分)(题号:85)/*-【程序改错】-题目:定义一个基类A,又定义两个公有继承的派生类D1和D2,定 义一个普通函数print_info()形参为指向对象的指针,它 们的调用都采用动态联编,将A类中的print()定义为虚函 数,并有如下输出: The A versio
15、n A The D1 info: 4 version 1 The D2 info:100 version A -注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include class A public: A() ver=A;/*FOUND*/ void print() coutThe A version verendl; protected: char ver;/*FOUND*/class D1 public: D1(int number) info=number; ver=1; void print() coutThe D1 info: info version veren
16、dl; private: int info;class D2:public A public: D2(int number) info=number; void print() coutThe D2 info:info version verprint();void main() A a; D1 d1(4); D2 d2(100);/*FOUND*/ print_info(a); print_info(&d1); print_info(&d2);答案: 1). virtual void print() 2). class D1:public A 3). void print_info(A *p
17、) 4). print_info(&a);第3题程序改错(10分)(题号:69)/*-【程序改错】-题目:利用插入法将20个数排列成降序,并计算排序后的序列中第10个 数到第20个数的和.-注意:不可以增加或删除程序行,也不可以更改程序的结构。-*/#include void main( )float s,a21=1,3,5,7,9,2,4,6,8,10,13,65,76,34,23,15,64,33,234,66;/*FOUND*/int i,j;for(j=2;j=0& aka0 )/*FOUND*/ak=ak+1;k-;/*FOUND*/ak=a0;for(i=1;i=20;i+)cou
18、tai ;s=0.0;for(j=10;j=20;j+)s=s+aj;cout=0&aka0) 3). ak+1=ak; 4). ak+1=a0;第1题程序设计(10分)(题号:259)/*-【程序设计】-题目: 将10个数按降序排列。-注意:部分源程序给出如下。请勿改动主函数main和其它 函数中的任何内容,仅在函数的花括号中填入所编 写的若干语句。-*/#include #include #include void writeinfile(int n) int k;fstream myfile;myfile.open(f.txt,ios:out);for(k=0;k10;k+)myfilenkendl;myfile.close();void main()int n10=5,6,4,2,3,7,8,5,6,7,i,j,k;/*Program*/* End */writeinfile(n);答案:-for(i=0;i9;i+)for(j= i+1;j10;j+)if(ninj)k=nj;nj=ni;ni=k;-