C期末模拟试题及答案2010

合集下载

C语言程序设计 海滨学院期末考试试卷(2010-2011 第二学期)(B)

C语言程序设计 海滨学院期末考试试卷(2010-2011 第二学期)(B)

北京交通大学海滨学院考试试题(B 卷)课程名称:C语言程序设计 2010-2011学年第二学期出题教师:计算机教学组专业:班级:姓名:学号:答题说明:本试卷共有六道大题,要求所有解答均写在答题卡上,否则无效。

上交试卷时按照发试卷时候的顺序整理试卷,平铺展开上交。

一、选择题(本题共30道题目,每题1分,共30分)1.以下叙述中正确的是()。

A)C语言比其他语言高级。

B)C语言可以不用编译就能被计算机识别执行。

C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式。

D)C语言出现的最晚,具有其他语言的一切优点。

2.算法是为解决某特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性的是()。

A)有零个输入或多个输入 B)高效性C)有穷性 D)确定性3.表达式3.6-5/2+1.2+5%2的值是()。

A)4.3 B) 4.8 C) 3.3 D) 3.84.C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符()。

A)必须为字母 B)必须为下划线C)必须为字母或下划线 D)可以是字母,数字和下划线中任一字符5.下列数据中,不合法的C语言实型数据的是()。

A)0.123 B)123e3 C)2.1e3.5 D)789.06.若有说明语句:char c='\72';则变量c()。

A)包含1个字符 B)包含2个字符C)包含3个字符 D)说明不合法,c的值不确定7.若有定义:int a=7;float x=2.5,y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是()。

A)2.500000 B)2.750000C)3.500000 D)0.0000008.下列可用于C语言用户标识符的一组是()。

A)void, define, WORD B)a3_b3, _123,CarC)For, -abc, IF Case D)2a, DO, sizeof9.以下不正确的叙述是()。

c语言期末模拟考试题及答案

c语言期末模拟考试题及答案

C语言期末模拟考试题及答案29、若在程序中用到“strlenO”函数时,应在程序开头写上(D)0 (1分)A、#include<math. h> B、#include<stdio. h>C、#include<stdlib. h>D、#include<string. h>30、若有int f (int a, int b);,则说明函数(1 分)A、是一个内部函数B、是一个外部函数f( B )oC、只能在本文件中使用D、不能被同一源程序其他本文件中的函数调用31、声明一个函数为外部函数,应该在声明函数的函数类型的前面加(C)。

(1分)A、autoB、staticC、externD、register32、若有int a=3, *pa; float f=4. 5, *pf;,则下列表述中,错误的是(B )。

(1分) A、pa=&a B、pa=&f C、pf=&f D、*pf=a+f 33、设char s[10]; int i=5;,下列表达式中,正确的表达式是(B )。

(1分)A、 s[i+6] B、*(s+i)C、*(&s+i)D、*((s++)+i 34、若有int a[10], *p=a;,则(C)。

(1 分) A、p++可以使p指向下一个字节B、p+=2相当于p=sizeof(a)/10C、p++可以使p指向下一个元素,即a[l]的首地址D、p+=2可以使p 指向下一个元素,即a[l] 的首地址35设有语句:inta[10] = {0,1, 2, 3, 4, 5, 6, 7, 8, 9}, i, *p=a;,下列表达式中,对a数组元素引用错误的是(D )o (1分)A、p[i]B、aEp-a]C、*(&a[i])D、*(*a (a+i))36、在C语句中,&后跟指针变量名,表示该指针变量的((C)。

(1分)A、值B、别名C、地址D、类型37、若程序中包含有以下说明和定义:struct ex{ int x, y;}… struct ex, x, y; … ,则在计算机上调试时,(A )。

2010计算机二级C 模拟考及答案

2010计算机二级C  模拟考及答案

2010计算机二级c++模拟考及答案笔试部分一、选择题1.算法的空间复杂度是指A)算法程序的长度B)算法程序中的指令条数C)算法程序所占的存储空间D)执行过程中所需要的存储空间【参考答案】D2.用链表表示线性表的优点是A)便于随机存取B)花费的存储空间较顺序存储少C)便于插入和删除操作D)数据元素的物理顺序与逻辑顺序相同【参考答案】C3.数据结构中,与所使用的计算机无关的是数据的A)存储结构B)物理结构C)逻辑结构D)物理和存储结构【参考答案】C4.结构化程序设计主要强调的是A)程序的规模B)程序的效率C)程序设计语言的先进性D)程序易读性【参考答案】D5.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指A)模块间的关系B)系统结构部件转换成软件的过程描述C)软件层次结构D)软件开发过程【参考答案】B6.检查软件产品是否符合需求定义的过程称为A)确认测试B)集成测试C)验证测试D)验收测试【参考答案】A7.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。

下列图符名标识的图符不属于数据流图合法图符的是A)控制流B)加工C)数据存储D)源和潭【参考答案】A8.应用数据库的主要目的是A)解决数据保密问题B)解决数据完整性问题C)解决数据共享问题D)解决数据量大的问题【参考答案】C9.在数据库设计中,将E-R图转换成关系数据模型的过程属于A)需求分析阶段B)逻辑设计阶段C)概念设计阶段D)物理设计阶段【参考答案】B10.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。

其中数据独立性最高的阶段是A)数据库系统B)文件系统C)人工管理D)数据项管理【参考答案】A11.下面关于C++语言的描述错误的是A)C++语言支持数据封装B)C++语言中引入友元没有破坏封装性C)C++语言允许函数名和运算符重载D)C++语言支持动态联编【参考答案】B12.设有定义int a=1;float f=12;char c=′a′;,则下列表示错误的是A)++a;B)f--;C)c++;D)8++;【参考答案】D13.下列程序的运行结果为#includevoid main(){int a=2;int b=a+1;cout《A)0.66667B)0C)0.7D)0.66666666【参考答案】B14.设int a=1,b=2;,则(a++)+b和a+++b这两个表达式的值分别为A)3,3B)3,4C)4,3D)4,4【参考答案】A15.下面程序的运行结果为#includevoid main(){char a=′3′;switch(a){case′3′:cout《《“3”;case′2′:cout《《“2”;break;default:cout《《“1”;}}A)3B)321C)31D)32【参考答案】D16.有如下数组声明:int num[10];,下标值引用错误的是A)num[10]B)num[5]C)num[3]D)num[0]【参考答案】A17.存在定义int a[10],x,*pa;,若pa=&a[0],下列的哪个选项和其他3个选项不是等价的?A)x=*pa;B)x=*(a+1);C)x=*(pa+1);D)x=a[1];【参考答案】A18.下面程序的运行结果为#includevoid swap(int&a,int b){int temp;temp=a++;a=b;b=temp;}void main(){int a=2,b=3;swap(a,b);cout《A)2,3B)3,2C)2,2D)3,3【参考答案】D19.一个函数功能不太复杂但要求被频繁调用,应选用A)内联函数B)重载函数C)递归函数D)嵌套函数【参考答案】A20.下面关于C++语言变量的叙述错误的是A)C++语言中变量分为auto,static,extern和register四种存储类型B)自动变量和外部变量的作用域为整个程序C)内部静态变量的作用域是定义它的函数D)外部静态变量的作用域是定义它的文件【参考答案】B21.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为A)public B)protected C)private D)static【参考答案】A22.在C++语言程序中,对象之间的相互通信通过A)继承实现B)调用成员函数实现C)封装实现D)函数重载实现【参考答案】B23.类的析构函数是在什么时候调用的?A)类创建时B)创建对象时C)删除对象时D)不自动调用【参考答案】C24.通常拷贝构造函数的参数是A)某个对象名B)某个对象的成员名C)某个对象的引用名D)某个对象的指针名【参考答案】C25.下面程序的运行结果为#includeclass A{static int n;public:A(){n=1;}A(int num){n=num;}void print(){cout《int A::n=2;void main(){A a,b(3);a.print();b.print();cout《A)11B)13C)23D)33【参考答案】D26.下列不是描述类的成员函数的是A)构造函数B)析构函数C)友元函数D)拷贝构造函数【参考答案】C27.继承机制的作用是A)信息隐藏B)数据封装C)定义新类D)数据抽象【参考答案】C28.C++语言类体系中,不能被派生类继承的有A)转换函数B)构造函数C)虚函数D)静态成员函数【参考答案】B29.下面程序的运行结果是#includeclass base{protected:int a;public:base(){cout《《“0”;}};class base1:virtual base{public:base1(){cout《《“1”;}};class base2:virtual base{public:base2(){cout《《“2”;}};class derived:public base1,public base2{public:derived(){cout《《“3”;}};void main(){derived obj;cout《A)0123B)3120C)0312D)3012【参考答案】A30.对于类定义class A{public:virtual void func1(){}void func2(){}};class B:public A{public:void func1(){cout《《″class B func1″《virtual void func2(){cout《《″class B func2″《下面正确的叙述是A)A::func2()和B::func1()都是虚函数B)A::func2()和B::func1()都不是虚函数C)B::func1()是虚函数,而A::func2()不是虚函数D)B::func1()不是虚函数,而A::func2()是虚函数【参考答案】C31.下面关于运算符重载的描述错误的是A)运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构B)不是所有的运算符都可以进行重载C)运算符函数的调用必须使用关键字operatorD)在C++语言中不可通过运算符重载创造出新的运算符【参考答案】C32.与语句cout《A)cout《《′\n′;B)cout《《′\12′;C)cout《《′\xA′;D)cout《《′\0′;【参考答案】D33.下面程序的运行结果是#includeint fun(int a[],int n){int result=1;for(int i=1;iresult=result*a[i];return result;}void main(){int a[3]={3,4,5};cout《A)12B)15C)20D)60【参考答案】C34.下面程序的运行结果是#includevoid main(){int i=1;while(i《=8)if(++i%3!=2)continue;else cout《A)25B)36C)258D)369【参考答案】C35.下列程序的运行结果为#includetemplateclass FF{TT a1,a2,a3;public:FF(TT b1,TT b2,TT b3){a1=b1;a2=b2;a3=b3;} TT Sum(){return a1+a2+a3;}};void main(){FF x(int(1.1),2,3),y(int(4.2),5,6);cout《A)6.115.2B)615C)615.2D)6.115【参考答案】B二、填空题(1)数据的逻辑结构有线性结构和【1】两大类。

2010程序设计期末试卷答案

2010程序设计期末试卷答案
【1】c!=’\n’
【2】_c>=’0’&&c<=’9’__
【3】j=1
【4】k>=0&&k<=6
【5】5
【6】6
【7】n==1
【8】(2*n-1)*x-p(n-1,x)
本题得分
五、编程题〖第1题5分,第2题9分,共计14分〗
1.将以下程序段改用嵌套的if语句实现。
int s,t,m;
t=(int)(s/10);
2.写一个函数,用“起泡法”对输入的10个整数按由小到大的顺序排列。
void main()
{
void sort(int b[10]);
int i,a[10];//正确的数组变量定义1分
for(i=0;i<10;i++)//正确的输入循环控制1分
scanf("%d",&a[i]);//正确的输入1分
sort(a);
for(i=0;i<10;i++)
printf("%d",a[i]);
}
void sort(b[10])
{
int i,j;
for(j=0;j<9;j++)//正确的冒泡法外循环控制1分
for(i=0;i<9-j;i++)//正确的冒泡法内循环控制1分
if(b[i]>b[i+1])//正确的比较1分
{
t=b[i];//正确的赋值1分
b[i]=b[i+1];//正确的赋值1分
b[i+1]=t;//正确的赋值1分
}
}
else if(s<70) m=1; //正确的条件以及赋值0.5分

计算机等级考试vc++2010秋_附答案

计算机等级考试vc++2010秋_附答案

2010 秋江苏省二级C++ 考试真题绝密★启用前2010 年秋江苏省高等学校非计算机专业学生计算机基础知识和应用能力等级考试二级试卷试卷语种:C++ 语言说明:1.本试卷包括计算机基础知识部分和程序设计部分,考试时间共12 0 分钟;2.本试卷满分为60分,分选择题和填空题,试卷不分A、B 类型;3.计算机基础知识部分全部是选择题(20 分),程序设计部分分为选择题(1 0 分) 和填空题(30 分) 两种;4.选择题用答题卡答题。

每一项有A、B、C、D 四个可供选择的答案,请选择其中一个你认为正确的答案,用HB 铅笔涂写在答题卡的相应答题号内。

每选对一项得 1 分,不选或选错不得分;5.填空题用答题纸答题。

请将答案用蓝、黑色钢笔或圆珠笔填写在答题纸的相应答题号内,每个答案只占一行,不得换行。

每填对一个答案得 1 分,不填或填错不得分;6.请认真填写并仔细核对答题卡和答题纸上的学校名称、准考证号和姓名是否填写正确。

7.考试结束时将试卷、答题卡和答题纸放在桌上,不得带走。

待监考人员收毕清点后,方可离场。

第一部分计算机基础知识1.微电子技术是信息技术领域中的关键技术,它以集成电路为核心.下列有关集成电路的叙述中,错误的是___(1)___A.现代集成电路使用的半导体材料只能是硅(Si),不能使用其它任何半导体材料B.集成度是指集成电路包含的电子元件数目,可分为SSI、MSI 、VLSI 等C.Moore 定律指出,单块集成电路的集成度平均18--24 个月翻一番D.我国第二代身份证中嵌入了集成电路芯片,可以实现电子防伪和数字管理功能2.数据传输速率是数据通信中重要的性能指标。

Gb/s 是数据传输速率的计量单位之一其正确含义是___(2)___ 。

A.每秒兆位B.每秒千兆位C.每秒百兆位D.每秒百万位3.所谓"变号操作"是指将一个整数变成绝对值相同但符号相反的另一个整数。

假设使用补码表示的8 位整数x=10010101, 则经过变号操作后结果为___(3)___.A.01101010B.00010101C.11101010D.011010114.下列有关PC 机主板的叙述中,错误的是___(4)___ 。

2010信息工程学院C语言2期末试卷(A)

2010信息工程学院C语言2期末试卷(A)

杭州电子科技大学信息工程学院考试试卷(A)卷考试课程计算机应用基础与程序设计(C语言)2考试日期2010年6月日成绩课程号教师号任课教师姓名考生姓名学号年级专业说明: 请将全部答案都书写在第5页答题纸上,否则答题无效。

试题一、判断题 (共10分) (用‘√’或‘×’标注对错)1.main函数必须写在一个C程序的最前面。

×2.定义函数时,可以有返回值,也可以无返回值。

√3.在调用函数时,实参传值给形参,调用结束时,形参值传给实参。

×4.a是一维数组名,数组元素a[1]还可以写作“*a++”。

×5.若有定义“int a[3][4];”,则在数组元素a[2][2]前有10个元素。

√6.有定义语句“char str1[ ]="Hello",str2[ ]={'W','o','r','l','d'};”,则数组str1和str2都有5个元素。

×7.有数组定义int a[3][3]={{1},{2,3}};,则a[2][2]的值为0。

√8.已知宏定义 #define S(a,b) a-b,执行语句 printf("%d",SQ(5+6,3+4));后的输出结果是4×。

9.设有说明struct stud { char num[8];char name[10];int score[4];};,stud只是一个类型名,系统没有为它分配存储空间。

√10.若有定义:char ch,*p=&ch;,通过指针p给变量ch读入字符的scanf函数调用语句是scanf(“%c”,p);√试题二、单选题,根据题目从A、B、C、D中,选择一个正确的选项(共30分)1.C语言程序中,当调用函数时( A )。

A. 实参和形参各占一个独立的存储单元B. 实参和形参可以共用存储单元C. 可以由用户指定是否共用存储单元D. 由计算机系统自动确定是否共用存储单元2.在C程序中,若对函数类型未加说明,则函数的隐含类型为( A )。

2010C 等级考试(答案)

2010C  等级考试(答案)

一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。

请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。

(11)下列关于函数的描述中,错误的是DA)函数可以没有返回值B)函数可以没有参数C)函数可以是一个类的成员D)函数不能被定义为模板(12)若MyClass是一个类名,且有如下语句序列BMyClass c1,*c2;MyClass*c3=new MyClass;MyClass&c4=c1;上面的语句序列所定义的类对象的个数是A)1B)2C)3D)4(13)下列关于继承方式的描述中,错误的是DA)如果不显式地指定继承方式,缺省的继承方式是私有(private)B)采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员C)采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员D)采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员(14)将前缀运算符“--”重载为非成员函数,下列原型中,能正确用于类中说明的是CA)Decr&operator--(int);B)Decr operator--(Decr&,int);C)friend Decr&operator--(Decr&);D)frlend Decr operator--(Decr&,int);(15)若MyTemp是一个只有一个虚拟类型参数的类模板,且有如下语句序列MyTemp p2;MyTemp p3[2];编译系统在处理上面的语句序列时,所生成的模板MyTemp的实例的个数是CA)1B)2C)3D)0(16)在C++中,cin是个BA)类B)对象C)模板D)函数(17)在下列字符中,不允许作为C++标识符的是DA)b B)B C)_D)2(18)下列叙述中,错误的是BA)false是一个逻辑型常量B)"b"是一个字符型常量C)365是一个int常量D)3.1415926是一个double常量(19)若x和y是程序中的两个整型变量,则下列if语句中正确的是AA)if(x==0)y=1;else y=2;B)if(x==0)then y=1else y=2;C)if(x==0)y=1else y=2;D)if x==0y=1;else y=2;(20)要定义整型数组x,使之包括初值为0的三个元素,下列语句中错误的是BA)int x[3]={0,0,0};B)int x[]={0};C)static int x[3]={0};D)int x[]={0,0,0};(21)关于函数中的<返回类型>,下列表述中错误的是DA)<返回类型>中有可能包含关键字intB)<返回类型>中有可能包含自定义标识符C)<返回类型>中有可能包含字符*D)<返回类型>中可能包含[](22)要定义一个引用变量p,使之引用类MyClass的一个对象,正确的定义语句是DA)MyClass p=MyClass;B)MyClass p=new MyClass;C)MyClass&p=new MyClass;D)MyClass a,&p=a;(23)有如下两个类定义class XX{private:double x1;protected:double x2;public:double x3;};class YY:protected XX{private:double y1;protected:double y2;public:double y3;};在类YY中保护成员变量的个数是CA)1B)2C)3D)4(24)下列关于运算符重载的描述中,错误的是AA)可以通过运算符重载在C++中创建新的运算符B)赋值运算符只能重载为成员函数C)运算符函数重载为类的成员函数时,第一操作数是该类对象D)重载类型转换运算符时不需要声明返回类型(25)下列关于类模板的描述中,错误的是DA)类模板的成员函数都是模板函数B)可以为类模板参数设置默认值C)类模板描述了一组类D)类模板中只允许有一个类型参数(26)下列控制格式输入输出的操作符中,能够设置浮点数精度的是AA)setprecisionB)setwC)setfillD)showpoint(27)下列程序段中包含4个函数,其中具有隐含this指针的是Bint fun1();class Test{public:int fun2();friend int fun3();static int fun4();};A)fun1B)fun2C)fun3D)fun4(28)有如下程序#include<iostream>using namespace std;class Test{public:Test(){}Test(const Test&t){cout<<1;}};Test fun(Test&u){Test t=u;return t;} int main(){Test x,y;x=fun(y);return0;}运行这个程序的输出结果是CA)无输出B)1C)11D)111(29)有如下程序#include<iostream>using namespace std;class A{public:A(int i=0):r1(i){}void print(){cout<<'E’<<r1<<’-‘;}void print()const{cout<<'C'<<r1*r1<<’-‘;} void print(int x){cout<<'P'<<r1*r1*r1<<’-‘;} private:int r1;};int main(){A a1;const A a2(4);a1.print(2);a2.print();return0;}运行时的输出结果是DA)P8-E4B)P8-C16-C)P0-E4-(30)下列代码声明了3个类class Person{};class Student:public Person{};class Undergraduate:Student{};下列关于这些类之间关系的描述中,错误的是BA)类Person是类Undergraduate的基类B)类Undergraduate从类Student公有继承C)类Student是类Person的派生类D)类Undergraduate是类Person的派生类(31)有如下程序#include<iostream>using namespace std;Class Base{public:Base(int x=0):valB(x){cout<<valB;}~Base(){cout<<valB;}private:int valB;};class Derived:public Base{public:Derived(int x=0,int y=0):Base(x),valD(y){cout<<valD;} ~Derived(){cout<<valD;}int valD;};int main(){Derived obj12(2,3);retuen0;}运行时的输出结果是AA)2332B)2323C)3232D)3223(32)下面是类Shape的定义:class Shape{public:virtual void Draw()=0;};下列关于Shape类的描述中,正确的是BA)类Shape是虚基类B)类Shape是抽象类看课本267页C)类Shape中的Draw函数声明有误D)语句“Shape s;”能够建立Shape的一个对象s(33)将运算符“+”重载为非成员函数,下列原型声明中,错误的是CA)MyClock operator+(MyClock,long);B)MyClock operator+(MyClock,MyClock);C)MyClock operator+(long,long);D)MyClock operator+(long,MyClock);(34)打开文件时可单独或组合使用下列文件打开模式①ios_base::app②ios_base::binary③ios_base::in④ios_base::out若要以二进制读方式打开一个文件,需使用的文件打开模式为CA)①③B)①④C)②③D)②④(35)有如下程序:#include<iostream>using namespace std;class B{public:B(int xx):x(xx){++count;x+=10;}virtual void show()const{cout<<count<<’_‘<<x<<endl;}protected:static int count;private:int x;};class D:public B{public:D(int xx,int yy):B(xx),y(yy){++count;y+=100;}virtual void show()const{cout<<count<<’-‘<<y<<endl;}private:int y;};int B::count=0;int main(){B*ptr=new D(10,20);ptr->show();delete ptr;return0;}运行时的输出结果是BA)1_120B)2_120C)1_20D)2_20二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡【l】~【15】序号的横线上,答在试卷上不得分。

2010C程序设计期末试卷

2010C程序设计期末试卷

2010C程序设计期末试卷B、若变量已正确定义,表达式x + y = z是⼀个合法的赋值表达式。

C、do-while语句先执⾏循环体,后判断循环条件,所以循环体⾄少会执⾏⼀次。

D、不同类型的变量在内存中占⽤存储空间的⼤⼩不⼀样。

16. char *s[ ]={"first","second","third"};printf("%s,%s,%c\n", s[0], s[1]+1,*s[2]);A、f irst,second,*thirdB、first, econd+1,*thirdC、first, econd, *tD、first, econd, t试题⼆、按题⽬的意思,写出正确的内容。

(共12分)1.C程序中的“真”和“假”是如何表⽰?2.读程序,回答问题#include#define MAX 7void main( ){ int i,a[MAX]={5,8,-7,5,3,0,7},c;for(i=0;i{ c=a[i]; /* 第8⾏*/a[i]=a[MAX-i-1];a[MAX-i-1]=c; /* 第10⾏*/}for(i=0;i}问题1.程序运⾏后的输出结果为是:。

问题2.将for循环中的i问题3.删除第8⾏,将第10⾏a[MAX-i-1]=c改为a[MAX-i-1]=a[i],for循环中仍然是i3.定义⼀个可以表⽰⽇期(年、⽉、⽇)的结构体数据类型date,并⽤该类型定义⼀个变量z同时为变量初始化,初始化年、⽉、⽇的值分别2007、6、28。

4.写出调⽤函数g(4)的输出结果。

return n;else return g(n-2)+g(n-1);}试题三、读程序写出程序执⾏结果(共24分)1. 阅读下列程序,并写出程序执⾏结果。

#includeint f(int m, int n){ int c= 0;for( ; m != 0 ; m=m/10 ){if(m%10 == n) c++;}return c;}void main( ){printf("%d#", f(30303, 0));printf("%d#", f(21212, 3));}2.阅读下列程序,并写程序执⾏结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++期末模拟试题及答案一、选择题(每题2分,共40分)1、面向对象程序设计将描述事物的数据与封装在一起,作为一个相互依存、不可分割的整体来处理。

A) 信息B) 数据隐藏C) 对数据的操作D) 数据抽象2、下列语句中,错误的是。

A) int *p=new int(5);B) int *p=new int[5];C) int *p=new int [20][(0);D) int *p=new int;3、下面有关类和对象的说法中,正确的是。

A) 系统为类和对象分配内存空间B) 类和对象没有区别C) 系统为类分配存储空间,不为对象分配存储空间D) 类与对象的关系和数据类型与变量的关系类似4、下列有关类和对象的说法中,不正确的是。

A) 任何一个对象只能属于一个类B) 对象是类的一个实例C) 类实质上是一种数据类型D) 一个类只能有一个对象5、下列说法中,不正确的是。

A) 要在类的外部直接使用类的私有成员是错误的B) 一个对象数组中的所有数组元素属于同一个类C) 当在类外部定义成员函数时,必须在函数名前加上类名和作用域运算符D) 同一个类的两个对象占用相同的内存空间6、在声明类时,下面的说法正确的是。

A) 数据成员的数据类型可以是registerB) 可以在类的声明中给数据成员赋初值C) 没有用private,public,protected定义的数据成员是公有成员D) 定义时,private,public,protected可以按任意顺序出现7、下列关于构造函数的描述中,正确的是。

A) 构造函数必须带有参数B) 构造函数可以带有返回值C) 构造函数的名字与类名完全相同D) 构造函数必须定义,不能默认8、下列有关析构函数叙述中,不正确的是。

A) 析构函数必须与类名相同,并在其前面加上符号~,以便和构造函数名区别B) 析构函数不能带有任何参数,不能有返回值C) 析构函数可以重载D) 对于全局定义的对象,在程序开始时调用构造函数,到程序结束时调用析构函数9、关于成员函数特征的下列叙述中,是错误的。

A) 成员函数一定是内联函数B) 成员函数可以重载C) 成员函数可以设置参数的默认值D) 成员函数可以是静态的10、下列说法中,不正确的是。

A) 利用常对象只能调用类中的常成员函数B) 类的常数据成员和引用成员必须在构造函数的初始化表中进行初始化C) 常成员函数可以对类中的任何数据成员进行更新D) 在程序中既可以定义指针数据成员,也可以定义对象指针11、友元函数的作用是。

A) 提高程序的运行效率B) 加强类的封装性C) 实现数据的隐藏性D) 增加成员函数的种类12、在下列有关静态成员函数的描述中,正确的是。

A) 静态成员函数只能在类外定义B) 在静态成员函数中可以使用this指针C) 在建立对象前,就可以为静态数据成员赋值D) 静态成员函数在类外定义时,要用static前缀13、使用派生类的主要原因是。

A) 提高程序的运行效率B) 加强类的封装性C) 提高代码的可重用性D) 实现数据的隐藏14、下列说法,不正确的是。

A) 函数在重载时其函数名应相同B) 基类中定义了虚函数ab(int,int),若在派生类中重新定义ab(int),则在派生类中ab为重载函数C) C++中所有运算符都可以重载D) 对于基类中定义的运算符重载函数,派生类中不一定可以继承15、下列叙述中,不正确的说法是。

A) 不能直接由抽象类建立对象B) 至少有一个纯虚函数的类称为抽象类C) 抽象类中能包含构造函数D) 抽象类中不能有数据成员16、下列说法中,不正确的是。

A) 在派生过程中构造函数不被继承B) 在派生过程中析构函数不被继承C) 声明为指向基类对象的指针可以指向其公有派生的对象D) 声明为指向公有派生类对象的指针可以指向其基类的对象17、关于虚函数的描述中,正确的是。

A) 虚函数是一个static类的成员函数B) 虚函数是一个非静态成员函数C) 派生类的虚函数与基类的虚函数具有不同的参数个数和类型D) 内联函数、构造函数、静态变量可以声明为虚函数18、模板的使用是为了。

A) 实现多态性B) 提高代码的运行效率C) 加强类的封装性D) 提高代码的可重用性19、下列说法中,不正确的是。

A) 类模板代表一个具体的、实际的类B) 函数模板经实例化生成的具体函数称为模板函数C) 在template语句与函数模板定义语句间不允许有别的语句D) 模板函数类似于重载函数,只是更严格一些20、当包含头文件iostream.h后,一个C++源程序中的cin是。

A) 一个标准语句。

B) 预定义的类。

C) 预定义的函数。

D) 预定义的对象。

二、判断题(每题1分,共10分)1、面向对象方法中的抽象,是指对具体问题进行概括,抽出一类对象的公共性质并加以描述的过程。

2、多态性是指一段程序能够处理多种类型对象的能力。

3、保护类型成员的性质和私有成员的性质相似,差别在于继承过程中对产生的新类影响不同。

4、拷贝构造函数是使用一个已经存在的对象,去初始化同类的一个新对象。

5、UML中的图形的作用是描述软件中类和对象以及它们的静态关系。

6、静态数据成员具有静态生存期。

7、条件编译是指程序中的某些内容要在满足一定条件的情况下才参与编译。

8、默认的拷贝构造函数完成的是深拷贝。

9、当类的继承方式为私有继承时,基类中的公有成员和保护成员都以私有成员身份出现在派生类中,基类的私有成员在派生类中不能直接访问。

10、如果基类声明了带有形参表的构造函数时,派生类就应当声明构造函数。

三、程序填空题(每题5分,共10分)1、按照程序执行结果,填入合适语句:#include<iostream>using namespace std;class Test{private:int n;static int m;public:int p;static int q;Test(int arg);static void disp1();void disp2();};___(1)____________(2)_________Test::Test(int arg){n=arg;p=arg;}void Test::disp1(){cout<<”m=”<<m<<”,q=”<<q<<endl;}void Test::disp2(){ cout<<”m=”<<m<<”,q=”<<q<<endl;cout<<”n=”<<n<<”,p=”<<p<<endl;}int main(){Test obj1(2);cout<<”p=”<<obj1.p<<”,q=”<<Test::q<<endl;Test::disp1();obj1.disp2();return 0;}程序执行结果:p=2,q=20m=10,q=20m=10,q=20n=2,p=22、按照程序执行结果,填入合适语句:#include<iostream>#include<cstdio>using namespace std;int count(char *str){int i,num=0;for(i=0;str[i];i++){____(1)_____________num++;}____(2)_____________}int main(){char text[100];cout<<”输入一句英语:”<<endl;gets(text);cout<<”这个句子里有”<<count(text)<<”个字母。

”<<endl;return 0;}程序执行结果:输入一句英语:It is very interesting!这个句子里有19个字母。

四、程序阅读题(共20分)1、阅读下面的程序,写出程序运行结果:(5分)#include <iostream>#include <iomanip>#include <algorithm>#include <vector>using namespace std ;int main(){vector<int> A(4);vector<int>::iterator pi;pi=A.begin(); *pi++=51; *pi++=61; *pi++=51; *pi++=81; cout<<*(A.begin()+1)<<endl;;cout<<*find(A.begin(),A.end(),51)<<endl;cout<<count(A.begin(),A.end(),51)<<endl;reverse(A.begin(),A.end());for (pi=A.begin();pi!=A.end();pi++) cout<<*pi<<" "; cout<<endl;sort(A.begin(),A.end());for (pi=A.begin();pi!=A.end();pi++) cout<<*pi<<" "; cout<<endl;return 0;}2、阅读下面的程序,写出程序运行结果:(5分)#include <iostream>using namespace std ;class A{public:virtual void func(int data){cout<<"class A:"<<data<<endl;} virtual void func(char *str){ cout<<"class A:"<<str<<endl; }void func(){ cout<<"class A" <<endl;}};class B: public A{public:void func(int data) { cout<<"class B:"<<data<<endl; }void func(char *str,int i){ cout<<"class B:"<<str<<" "<<i<<endl;} void func(){ cout<<"class B"<<endl;}};int main(int argc,char *argv[]){A *pa;B b;pa=&b;pa->func(1);pa->A::func(1);pa->func("haha");b.func("haha",2);pa->func();return 0;}3、阅读下面的程序,写出程序运行结果:(6分)#include <iostream>#include<string>using namespace std;class CreateAndDestroy{public:CreateAndDestroy(int value, char str[20]){data=value;strcpy(memo,str);cout<< "Object "<<memo<<" constructor"<<endl; }~CreateAndDestroy(){cout<<"Object "<<memo<<" destructor "<<endl; }private:int data;char memo[20];};CreateAndDestroy first( 1," first " );void create( void ){CreateAndDestroy fifth( 3," fifth " );}int main(){create();CreateAndDestroy fourth( 2," fourth " );return 0;}4、阅读下面的程序,写出程序运行结果:(4分)#include <iostream>using namespace std;class CRange{public:int index;CRange(int i) { index = i; }};class CString{char a[100];int len;public:CString(char* s) {len = strlen(s);strcpy(a, s);}char& operator[](int i) {if( i>=0 && i<len ) return a[i];else throw CRange(i);}};int DisplayHasCatch(CString& s){try{int j;for( j=0; j<20; j++ ) cout<<s[j]<<endl; //注意[]运算符被重载了}catch( CRange r ) {cerr<<endl<<"字符串下标:"<<r.index<<"超界!"<<endl;}return 99;}int main(){CString S("ABC");int i = DisplayHasCatch(S);return 0;}五、编程题(共20分)1、根据下面的要求,完成程序编写,要求包含main函数并在main中使用所定义类的对象。

相关文档
最新文档