试卷名称:程序设计试卷4试卷说明:C++期末考试试卷命题教师:中南大学信息科学与工程学院曹岳辉一、单项选择题(总分21)1.(分值:1.0分)有如下程序:#includeiostreamusingnamespacestd;intmain(){voidfunction(doubleval);doubleval;function(val);coutval;return0;}voidfunction(doubleval){val=3;}编译运行该程序将出现的情况是()。A:编译出错,无法运行B:输出:3C:输出:3.0D:输出一个不确定的数序号:77难度:1考查点:函数2.(分值:1.0分)表达式(1,2,3,4)的结果是__________。A:1B:2C:3D:4序号:115难度:1考查点:C++基础知识3.(分值:1.0分)结构化程序由三种基本结构组成,不包括__________。A:顺序结构B:选择结构C:控制结构D:循环结构序号:123难度:1考查点:C++基础知识4.(分值:1.0分)在面向对象程序设计中,实现信息隐蔽是靠__________。A:对象的继承B:对象的封装C:对象的分类D:对象的多态序号:132难度:1考查点:类与对象5.(分值:1.0分)在函数中如果不说明变量的存储类型,则默认的存储类型是__________。A:autoB:staticC:externD:register序号:133难度:1考查点:C++基础知识6.(分值:1.0分)下列关于动态联编的描述中,错误的是()。A:动态联编是以虚函数为基础B:动态联编是运行时确定所调用的函数代码的C:动态联编调用函数操作是指向对象的指针或对象引用D:动态联编是在编译时确定操作函数的序号:142难度:1考查点:多态性与虚函数7.(分值:1.0分)如果一个类至少有一个纯虚函数,那么就称该类为()。A:抽象类B:虚函数C:派生类D:以上都不对序号:143难度:1考查点:多态性与虚函数8.(分值:1.0分)下列说法不正确的是:____________。A:for,while和do-while循环体中的语句可以是空语句。B:使用while和do-while循环时,循环变量初始化的操作应在循环语句之前完成。C:for和do-while循环都是先执行循环体语句,后判断循环条件表达式。D:while循环是先判断循环条件表达式,后执行循环体语句。序号:213难度:1考查点:程序控制结构9.(分值:1.0分)设有类型说明:enumcolor{red,yellow=3,white,black};则执行语句coutwhiteR\nR;后输出的结果是。A:4B:3C:2D:1序号:225难度:1考查点:自定义数据类型10.(分值:1.0分)C++源程序文件的扩展名为。A:.CPPB:.CC:.DLLD:.EXE序号:241难度:1考查点:C++基础知识11.(分值:1.0分)以下关于文件操作的叙述中,不正确的是()。A:打开文件的目的是使文件对象与磁盘文件建立联系B:文件读写过程中,程序将直接与磁盘文件进行数据交换C:关闭文件的目的之一是保证将输出的数据写入硬盘文件D:关闭文件的目的之一是释放内存中的文件对象序号:243难度:1考查点:输入输出流12.(分值:1.0分)进行文件操作时,需要包含()文件。A:iostream.hB:fstream.hC:stdion.hD:math.h序号:251难度:1考查点:输入输出流13.(分值:1.0分)有inti,a[10],*p=a;则下面()不是对a数组元素的正确引用,其中0≤i≤9。A:a[p-a]B:*(&a[i])C:p[i]D:*(*(a+i))序号:284难度:1考查点:指针14.(分值:1.0分)chara;intb;,a+4/b结果的数据类型为_______。A:intB:charC:floatD:unsigned序号:327难度:1考查点:自定义数据类型15.(分值:1.0分)_________不是Vc++6.0的开发过程。A:创建工程B:创建c++源程序文件C:使用exe程序D:编译源程序序号:337难度:1考查点:C++基础知识16.(分值:1.0分)已知chara[][20]={beijing,shanghai,changsha};语句couta[3];得到的输出是:A:jB:changshaC:输出结果不确定D:数组定义有错序号:352难度:1考查点:数组17.(分值:1.0分)下面叙述不正确的是________。A:成员的访问能力在私有派生类中和公有派生类中是不同的B:基类的私有成员在公有派生类中不可访问C:赋值兼容规则不是用于多重继承的组合D:基类公有成员在保护派生中是保护的序号:394难度:1考查点:继承与派生18.(分值:1.0分)在多重继承中,公有派生和私有派生对于基类成员在派生类中的访问性与单一继承的规则______。A:相同B:不同C:部分相同,部分不同D:以上都不对序号:402难度:1考查点:继承与派生19.(分值:1.0分)有如下类声明:classTestClass{inti;private:intj;protected:intk;public:intm,n;};其中,私有成员的数量为()。A:0B:1C:2D:3序号:403难度:1考查点:类与对象20.(分值:1.0分)类模板的模板参数可用做________。A:数据成员的类型B:成员函数的类型C:成员函数的参数类型D:以上均可序号:419难度:1考查点:模板21.(分值:1.0分)下列是重载乘法运算符的函数原型声明,其中错误的是()。A:MyClassoperator*(double,double);B:MyClassoperator*(double,MyClass);C:MyClassoperator*(MyClass,double);D:MyClassoperator*(MyClass,MyClass);序号:429难度:1考查点:重载二、填空题(总分44)1.(分值:2.0)从用户使用的角度看,函数可以分为系统函数和用户自定义函数。序号:253难度:1考查点:函数2.(分值:2.0)自定义类型包括结构体、公用体和枚举三种类型。序号:85难度:1考查点:自定义数据类型3.(分值:2.0)模板分为函数模板和类模板。序号:314难度:1考查点:模板4.(分值:2.0)如果在类中定义了一个成员函数为虚函数,则表明在该继承层次链条的派生类中有可能重新定义这个成员函数的实现,即它可能被派生类的同名函数所覆盖。序号:286难度:1考查点:多态性与虚函数5.(分值:2.0)C++语言中,根据数据在文件中的编码形式不同,把文件分为文本文件和二进制两种。序号:103难度:1考查点:输入输出流6.(分值:6.0)完成以下程序,实现将十进制数1234转换为八进制数:#includeiostream.hvoidmain(){voidf(int)或voidf(intn);f(1234);}voidf(intn){if(n=8)f(n/8);coutn%8;}序号:39难度:2考查点:函数7.(分值:6.0)以下程序中实现两个数的交换,请将程序补充完整。#includeiostreamusingnamespacestd;voidmain(){inta=5,b=9;voidswap(int*,int*);swap(&a,&b)coutRa=RaRb=Rbendl;}voidswap(int*p,int*q){intt;t=*p;*p=*q;*q=t;}序号:109难度:2考查点:指针8.(分值:2.0)应用程序hello.cpp中只有一个函数,这个函数的名称是main。(注意:答案只写函数名)序号:313难度:1考查点:C++基础知识9.(分值:2.0)有如下程序段:for(inti=l;i=50;i++){if(i%3!=0)continue;elseif(i%5!=0)continue;couti,;}执行这个程序段的输出是15,30,45。序号:48难度:1考查点:C++基础知识10.(分值:2.0)在声明派生类时,如果不显式地给出继承方式,缺省的类继承方式是私有继承private。已知有如下类定义:classBase{protected:voidfun(){}};classDerived:Base{};则Base类中的成员函数fun(),在Derived类中的访问权限是private(注意:要求填写private、protected或public中的一项)。序号:297难度:1考查点:继承与派生11.(分值:6.0)以下程序的功能是:设计一个Employee类,包括编号、姓名和工资等私有数据成员,不含任何成员函数,只将main()设置为该类的友元函数,在主函数中输出编号、姓名和工资等数据。#includeiostream.hclassEmployee{intno;charname[10];floatsalary;public:friendvoidmain();};voidmain(){Employeeobj;cinobj.noobj.nameobj.salary;coutobj.name的编号是obj.no,工资为obj.salaryendl;}序号:309难度:3考查点:类与对象12.(分值:2.0)类是对象的抽象,而对象则是类的具体实例。序号:204难度:1考查点:类与对象13.(分值:2.0)有如下程序段:charC[20]=examination;C[4]=0;coutcendl;执行这个程序段的输出是exam。序号:50难度:1考查点:数组14.(分值:6.0)从键盘上输入一串字符,以Ctrl+Z(^Z)表示输入结束。统计其中包含的单词的个数、字母的个数、数字个数。规定单词之间用一个空白符分开(空白符包括空格符、水平制表符、换行符)。#includeiostreamusingnamespacestd;intmain(){charc;intalpha(0),num(0),ch(0),word(0);while((c=getchar())!=EOF)//使用getchar()函数逐一读取字符;EOF代表文本结束符,键盘上对应输入Ctrl+Z{if(c==''||c=='\t'||c=='\n')word++;if(c='a'&&c='z'||c='A'&&c='Z')alpha++;elseif(c='0'&&c='9'或c=48&&c=57)num++;elsech++或ch=ch+1或ch+=1;}cout字母数=alpha数字数=num其他字符数=ch;cout单词数=wordendl;return0;}序号:150难度:2考查点:程序控制结构三、问答题(总分25)1.(分值:5.0分)写出运算结果:#includeiostream.hvoidmain(){chara,b,s;a=0x01;b=0x02;s=a|b;cout(int)s;}参考答案:3序号:48难度:2考查点:程序控制结构2.(分值:5.0分)阅读程序,写出运行结果。#includeiostream.hintd=1;fun(intp){intd=5;d+=p++;coutd;}voidmain(){inta=3;fun(a);d+=a++;coutd;}参考答案:84序号:94难度:2考查点:函数3.(分值:5.0分)请写出下面程序运行的结果。voidmain(){inti,j,a[5]={1};for(i=1;i5;i++)for(j=i-1;j=0;j--)a[i]=a[i]+a[j];couta[4];}参考答案:8序号:75难度:2考查点:数组4.(