第1页共9页2010年1月高等教育自学考试全国统一命题考试C++程序设计试题课程代码:04737一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.在C++中,头文件扩展名为()A..cppB..hC..1ibD..obj2.下列符号中,不属于分隔符的是()A.,B./C.;D.{}3.可替换#definePI3.1415926的语句是()A.floatPI3.1415926;B.constfloatPI=3.1415926;C.constPI(3.1415926);D.const3.1415926;4.布尔类型标识符是()A.voidB.shortC.longD.bool5.下列不是C++语言的基本数据类型的是()A.字符类型B.整数类型C.逻辑类型D.枚举类型6.C++允许在结构中定义函数,这些函数称为()A.静态函数B.构造函数C.析构函数D.成员函数7.设函数voidinc(int)将形参加1,如有整型变量inti=10;则执行inc(i);后,i的值为()A.9B.10C.11D.未知8.下列哪种默认参数的声明是不正确的()A.intmax(inta,intb,intc,intd=0);B.intmax(inta,intb,intc=0,intd=0);C.intmax(inta=0,intb,intc=0,intd=0);D.intmax(inta,intb=0,intc=0,intd=0);9.设int&max(int&,int&)返回两参数中较大者,如有两整型变量inta=10;intb=15;在执行max(a,b)++后,a,b值分别为()A.10,15B.11,15C.10,16D.1l,1610.包含哪种语句的函数不能声明为内联函数()A.循环B.变量自增自减C.if...else…D.变量声明11.定义函数模板中使用的参数类型标识符需使用下列哪组符号括起来()A.B.“”C.()D.{}12.一个类拥有多个构造函数,则这些构造函数间为()第2页共9页A.重载关系B.重复关系C.拷贝关系D.无关系13.对于拷贝构造函数point::point(point&p),下列说明正确的是()A.该函数只能访问P的私有成员B.该函数不能访问P的公有成员C.该函数可以访问P的私有和公有成员D.该函数不能访问P的成员14.使用delete[]删除对象数组时,描述正确的是()A.数组中各元素都调用析构函数B.数组中各元素都调用构造函数C.不调用析构函数D.只有首元素调用析构函数15.下列哪个指令属于条件编译指令()A.#elifB.#errorC.#pragmaD.#include16.设类Test中存在成员staticintx,则下列哪种初始化方式是正确的()A.Test::intx=25;B.intx=25;C.intTest::x=25;D.intTestx=25;17.下列关于友元的描述错误的是()A.成员函数不可作友元B.类可以作友元C.普通函数可以作友元D.静态函数可以作友元18.在继承中,派生类拥有的基类个数为()A.0个B.1个C.多个D.至少1个19.基类中的protected成员,通过public派生,其在派生类中的可见性为()A.不可访问B.privateC.protectedD.public20.下列哪个不是面向对象的关键要素()A.抽象性B.结构性C.封装性D.多态性二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。21.在STL库中用于实现数组内容反转的函数是______。22.若要使用C++标准类库,需要指定相应的命名空间,所用的语句是______。23.C++语言中的整数常量有4种描述类型:十进制常量、长整型常量、八进制常量和______。24.声明一个名为a的整型引用变量所使用的语句是______。25.重载的运算符仍保留原有的优先级、______和语法结构。26.执行代码intb=100;couthexb:程序的输出结果是______。27.带有纯虚函数的类称为抽象类,它只能作为______来使用。28.使用______作为函数参数,实参对象和形参对象代表同一对象,改变形参对象的值就是改变实参对象的值。29.UML中对象之间的静态关系是通过对象属性之间的连接反映的,称之为______。30.如果一个模板声明列出多个参数,则多个参数之间必须使用逗号隔开,每个参数都必须重复使用关键字______。31.C++类的构造函数名与______名称一样,且没有返回值。第3页共9页32.C++规定,当一个成员函数被调用时,系统自动向它传递一个隐含的参数,该参数是一个指向调用该函数的对象的指针,该指针被称为______指针。33.声明一个常成员函数Fun,其返回类型为char,第一个参数类型为int,第二个参数类型为double,函数Fun的声明原型是______。34.C++语言中的“聚合”隐含了两种实现方式,一种是______,另一种是用一个类的对象作为一种广义的数据类型来定义整体对象的一个属性。35.简单成员函数是指声明中不含const、______和static关键字的函数。36.在派生类中继承的基类成员的初始化,需要由派生类的构造函数调用基类的______来完成。37.在C++中,利用向量类模板定义一个具有20个int的向量,其所有元素被置为1,实现此操作的语句是______。38.vector类中用于获取无需再次分配内存就能容纳的对象个数的方法是______。39.动态联编是程序运行到需要的语句处才动态确定的,这称为______多态性。40.C++重载“=”运算符的函数名是______。三、改错题(本大题共5小题,每小题4分,共20分)下面的每题中有一处错误,请用下横线标出错误所在行并给出修改意见41.#includeiostream.h#definePI3.14;voidmain(){doublei;intr;cout″输入圆形半径:″;cinr;i=2*PI*r;cout″圆形周长=″iendl;i=PI*r*r;cout″圆形面积=″iendl;}42.#includeiostream.hclassA{private:intx,y;public:A(inta=0,b=1);voidShow();};A::A(inta,intb){x=a;y=b;}voidA::Show()第4页共9页{cout″x=″xendl;cout″y=″yendl;}43.#includeiostream.hclassA{unsignedcharvar;public:A(unsignedcharx){var=x:}voidprint(){cout″var=″var;}};voidmain(){Aa(″x″);a.print();}44.#includeiostream.hclassClass{public:voidprint(inta,intb){cout″int:″aendl;cout″int:″bendl;}voidprint(char*a,char*b){cout″string:″aendl;cout″string:″bendl;}voidprint(char*a,unsignedintb){cout″string:″aendl;cout″int:″bendl;}};voidmain(){Classcls;cls.print(10,20);cls.print(′c′,1);cls.print(′x′,′y′);第5页共9页cls.print(″Hello!″,0);}45.#includeiostream.hclassClass{private:intval;public:voidfunc(inta){val=a;}};voidmain(){Class*cls;cls-func(10);}四、完成程序题(本大题共5小题,每题4分,共20分)46.将下面程序补充完整,使程序计算100以内所有可被7整除的自然数之和。#includeiostream.hvoidmain(){intx=1;intsum=0;while(true){if(x100){______;}if(______){sum=sum+x;}x++;}coutsumendl;}47.将下面程序补充完整,使程序执行结果为9。#includeiostream.hclassClass{public:______{x=a;}第6页共9页______{returnx*x;}private:intx;};voidmain(){Classa(3);couta.get()endl;}48.将下面程序补充完整,使程序正确的初始化私有变量var及释放资源。classClass{private:int*var;public:Class(intnum);~Class();};Class::Class(intnum){_______;}Class::~Class(){_______;}49.将下面程序补充完整,使程序的输出结果为:ClassA::PrintClassB::Print程序如下:#includeiostream.hclassBase{public:virtualvoidPrint()const{cout″Base::Print″endl;}};classClassA:publicBase{public:voidPrint()const{cout″ClassA::Print″endl;}第7页共9页};classClassB:publicBase{public:voidPrint()const{cout″ClassB::Print″endl;}};voidPrint(______){______;}voidmain(){ClassAa;ClassBb;Print(a);Print(b);}50.下列程序的运行结果如下:x=22,y=22根据结果将程序补充完整。#includeiostream.htemplate______voidf(______){if(sizeof(T1)sizeof(T2))x=(T1)y;elsey=(T2)x;}voidmain(){doublex=134.2;inty=22;f(x,y);cout″x=″x″,y=″y;}五、程序分析题(本大题共2小题,每小题5分,共10分)请给出下面程序的输出结果51.#includeiostream.hclassClass{public:staticintvar;Class(){第8页共9页var++;}};intClass::var=0;voidmain(){cout″Class::var=″Class::varendl;Classcl;cout″cl.var=″cl.varendl;Classc2,c3;cout″c2.var=″c2.varendl;}52.#includeiostream.hclassA{public:A();voidShow();~A();private:staticintc;};intA::c=0;A::A(){cout″constructor.″endl;c+=10;}voidA::Show(){cout″c=″cendl;}A::~A(){cout″destructor.″endl;}voidmain(){Aa,b;a.Show();b.Show();}六、程序设计题