全国计算机等级考试二级C笔试试题.doc
优质文本2016年3月 二级C+真题及参考答案一、选择题每题2分,共70分 11对C+编译器区分重载(zhòn zi)函数无任何意义的信息是 A参数类型 B参数个数 C返回值类型 D常成员函数关键字coast 12有如下类定义和变量定义: class A publie: Adata=0; A int GetData coast return data; void SetDataint n data=n; private: int data; ; ccnst A a; A b; 以下函数调用中错误的选项是 Aa .GetData; Ba .SetData10; Cb .GetData; Db .SetData10; 13有如下类定义和变量定义: class Parents public: int publicuata; private: int privateData; ; class ChildA:public Parents/*类体略*/; class ChildB:private Parents/*类体略*/; ChildA a; ChildBb; 以下语句中正确的选项是 Acout<<a.publicData <<endl ; Bcout<<a.privateData <<endl ; Ccout<<b.publicData <<endl ; Dcout<<b.privateData <<endl ; 14运算符重载时不需要保持的性质是 A操作数个数 B操作数类型 C优先级 D结合性 15以下关于函数模板的描述中,错误的选项是 A从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准 B对于常规参数所对应的模板实参,任何情况下都不能省略 C虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参 D模板参数表不能为空 16要建立文件流并翻开当前目录下的文件用于输入,以下语句中错误的选项是 Aifstream fin=ifstream.open“; Bifstream*fir.=new ifstream“; Cifstream fin; fin.open“; Difstream *fin=new ifstream ;fin一>open“; 17以下描述中,不属于面向对象思想主要特征的是 A封装性 B跨平台性 C继承性 D多态性 18有如下程序段: Tnt i=4;int j=l; int main int i=8,j=i; cout<<i<<j<<endl; 运行时的输出结果是 A44 B41 C88 D81 19有如下程序段: int i=5; whileint i=0cout?'*'i-; 运行时输出“*的个数是 A0 B1 C5 D无穷 20己知有数组定义(dìngyì) char a34; 以下表达式中错误的选项是 Aa2=“WIN Bstrcpya2,“WIN Ca 23='W' Da01=a01 21函数fun的原型为 int funint,int,int; 以下重载函数原型中错误的选项是 Achar funint,int; Bdouble funint,int,double; Cint funint,char*; Dfloat fun int, int, int; 22建立一个类对象时,系统自动调用 A析构函数 B构造函数 C静态函数 D友元函数 23通过派生类的对象可直接访问其 A公有继承基类的公有成员 B公有继承基类的私有成员 C私有继承基类的公有成员 D私有继承基类的私有成员 24己知表达式+a中的“+是作为成员函数重载的运算符,那么与十+a等效的运算符函数调用形式为 Aa .orerator+1 Boperator+a Coperator+a,l Da.operator+ 25在定义一个类模板时,模板形参表是用一对括号括起来的,所采用的括号是 A B C< > D 26当使用ifstream流类定义一个流对象并翻开一个磁盘文件时,文件的默认翻开方式为 Aios_base:in Bios_base:in|ios_base:out Cios_base:out Dios_base:in&ios_base:out 27有如下程序: #include<iostream> #include<cstring> using namespace std; class XCD char* a; int b; public: XCDchar* aa, int bb a=new charstrlenaa+1; strcptya,aa; b=bb; Char* Geta return a; int Getb return b; ; int main char *pl=“abcd,*p2=“weirong; int dl=6, d2=8; XCD xpl,dl,Yp2,d2; cout<<strien x .Geta+y. Getb+endl; return 0; 运行时的输出结果是 A12 B16 C14 D11 28有如下程序: #include<iostream> #include<cstring> using namespace std; class XCF int a; public: XCFint aa=0:a aacout<<“1; XCFXCF& xa=x .a; cout<<“2; XCFcout<<a; int Getareturn a; ; int main XCF dl5,d7 dl; XCF *pd=new XCF8; cout<<pd一>Geta; delete pd; return 0; 运行时的输出结果是 A121SS88 B12188SS C12185 D128512 29类MyClass声明(shngmíng)如下: class MyClass int n; public; MyClassint k:nk int getValueconstreturn n; ; 在以下数组定义中正确的选项是 AMyClass x12; BMyClass x22=new MyClass1,new MyClass2; CMyClass *x32; DMyClass *x42=MyClass1,MyClass2; 30有如下程序: #include<iostream> using namespace std; class AA lilt k; protected: int n; void setKint k this->k=k; public: void setNint n this->n=n; ; class BB: public /*类体略*/; int main BB x_ ; /1 x .n=1; /2 x.setN 2; /3 x.k=3; /4 x .setK4; return 0; 在标注号码的四条语句中正确的选项是 A1 B2 C3 D4 31有如下类定义: class XX int xx; public: XX:xx0cout<<' A' XXint n:xx ntout<<' B' ; Class YY:public XX Int yy; public: YY:yy 0cout+yy; YYint n:XXn+1,yyncout<<yy; YY int m, int n:XX m,yyncout<<yy; ; 以下选项中,输出结果为A0的语句是 AYY y10,0; BYY y21; CYY y30; DYY y4; 32有如下程序: #include<iostream> Using namespace std; class A public: virtual void fcout+1; void gcout<<2; ; class B:public A public: virtual void fcout<<3; void gecut<<4; ; void showA &aa.f;a.g ; int main B b; showb; return 0; 运行时的输出结果是 A12 B34 C14 D32 33有如下(rúxià)程序: #include<iostream> using namespace std; class Pair int m; int n; public: Pairint i,int j:mi,nj boot operator >pair pconst; /须在类体外给出定义 ; int main Pair Al3,4,p24,3;p34,5; Cout<<pl>p2<<P2>P1<<p2>p3<<p3>p2; return 0; 运算符函数。operator>的功能是比拟两个Pair对象的大小,当左边对象大时,返回true,否那么返回false。比拟规那么是首先比拟两对象的m成员,m大者为大;当m相等时比拟n,n大者为大。程序输出0101,以下对运算符重载函数的正确定义是 Abool Pair:operator>Pair pconst if m!=p.m return m>p.m; return n>p.n; Bbool Pair:;operator>Pair p if m!=p.m return m>p.m; return n>p.n; Cbool Pair:operator>Pair pconst if m>p.m return true; return n>p.n; Dbool Pair:;operator>Pair p if m>p.m return true; return n>p.n; 34假定以下语句都是程序运行后首次执行的输出语句,其中输出结果与另外三条语句不同的语句是 Acout<<setfill'*<<123<<setw9<<321; Bcout<<setfill*<<setw6<<left<<123<<setw6<<right<<321; Ccout<<123<<setfill*<<setw6<<321; Dcout<<setfill*<<SetW9<<left<<123<<321; 35有如下程序: #include<iostream> using namespace std; class ONE int c; public: ONE:c0cout<<1; ONEint n:c ncout<<2; ; class TWO ONE onel; ONE one2; public: TWOint m:one2mcout<<3; ; int maint TWO t4 return 0 运行时的输出结果是 A3 B23 C123 D213 二、填空题每空2分,共30分 6有如下程序段: int x=1,Y=2,z=3; x=xz; y=yz; z=xy; cout<<x<<y<<z; 执行这个程序段的输出是【6】。 7有如下(rúxià)程序段: ferint i=1; i<=50;i+ ifi%3 != 0 continue; else ifi%5!=0 continue; tout<<i<<“,; 执行这个程序段的输出是【7】。 8有如下程序段: Char c 20=“examination; c4=0; cout<<c<<endl; 执行这个程序段的输出是【8】。 9下面的函数利用递归实现了求1+2+3+n的功能: int sumint n ifn=0 return 0; else return n+sumn-1; 在执行sum10的过程中,递归调用sum函数的次数是【9】。 10非成员函数应该声明为类【10】函数才能访问该类的私有成员。 11有如下程序: #include<iostream> using namespace std; class Monitor public: Monitorchar t:type t void print const cout<<“The type of monitor is<<type<<endl; private: char type; ; class Computer public: Computerint i,char c: 【11】 void Printconst cout<<“The computer is<<id<<endl;mon.Print; private: int id; Monitor mon; ; const Computer myComputer101,'B; myComputer .Print; return 0; 请将程序补充完整,使程序在运行时输出: The computer is 101 'The type of monitor i.s 8 12有如下程序: #include <iostream> using namespace std class Animal public: virtual char* getTypeconst return “Animal; virtual char* getVoiceconst return “Voice; ; Class Dog : public Animal public: char* getType const return “Dog; char* getVoice const return “Woof ; void typeAnimal& a cout<<a.getType; void speakAnimal a cout<<a.getVoice; int main Dog d; type d;cout<<“ speak;speakd;cout<<endi; return 0; 运行时的输出结果是【12】。 13补充完整下面(xià mian)的类定义: const double PI=3 .14; class Circle /圆形物体的抽象基类 protected: double r; /半径 public: Circledouble radius=0:rradius 【13】;/计算圆形物体外表积的纯虚函数声明 ; class Cylinder:public Circle /圆柱体类 double h; /高度 public: Cylindrdouble radius=0, doubli height=0: Circleradius,h height Virtual double Area /计算圆柱体的外表积 return 2*PI*r*r+h; ; 14补充完整下面的类定义: class XCH char* a; public: XCHchar* as /构造函数 a=new charstrlenaa+1; strcpya,aa; XCH& operator=const XCH& x /重载赋值函数 Delele a; A=new charstrlenx.a+l; strcpya, x .a 【14】; XCH delete a; ; 15补充完整下面的模板定义: template<class Type> /Type为类型参数 class Xtwo /由两个Type类型的数据成员构成的模板类 Type a; Type b; public: XtweType aa=0, Type bb=0:aaa,bbb int Ccmpare /比拟a和b的大小 if a>breturm 1; else ifa=b return 0; else return -1; Type Snm return a+b; /返回a和b之和 Type Mult; /函数声明,返回a和b之乘积 ; Template<class Type> 【15】:Multreturn a*b; /Mult 函数的类外定义 参考 答案 一、 选择题:11D 12B 13A 14B 15B16A 17B 18C 19) A 20D21D 22B 23A 24B 25C 26B 27A 28B 29C 30B31D 32D 33C 34C 35B 二、填空题6213 715,30,45 8examination910 10友元 11idi,momc 12Dog speak Woof 13Virtual double Area return PI *r*r 14return *a 15Xwo<Type>15 / 15优质文本2016年9月二级C+笔试试卷11函数(hánshù)FA调用FB,假设要把这两个函数定义在同一个文件中,那么 。 AFA必须定义在FB之前 BFB必须定义在FA之前 C假设FA定义在FB之后,那么FA的原型必须出现在FB的定义之前 D假设FB定义在FA之后,那么FB的原型必须出现在FA的定义之前 12有如下两个类定义: class AA; class BB AA v1,*v2; BB v3; int *v4; ; 其中有一个成员变量的定义是错误的,这个变量是 。 Av1 Bv2 Cv3 Dv4 13有如下类定义: class XX int xdata; public: XX(int n=0) : xdata(n) ; class YY : public XX int ydata; public: YY(int m=0, int n=0) : XX(m), ydata(n) ; YY类的对象包含的数据成员的个数是 。 A1 B2 C3 D4 14以下关于运算符函数的描述中,错误的选项是 。 A运算符函数的名称总是以operator为前缀 B运算符函数的参数可以是对象 C运算符函数只能定义为类的成员函数 D在表达式中使用重载的运算符相当于调用运算符重载函数 15以下关于模板形参的描述中,错误的选项是 。 A模板形参表必须在关键字template之后 B模板形参表必须用括弧()括起来 C)可以用class修饰模板形参 D可以用typename修饰模板形参 16在以下枚举符号中,用来表示“相对于当前位置文件定位方式的是 。 Aios_base:cur Bios_base:beg Cios_base:out Dios_base:end 17以下字符串中可以用作C+标识符的是 。 A2016var Bgoto Ctest-2016 D_123 18以下枚举类型的定义中,包含枚举值3的是 。 Aenum test RED, YELLOW, BLUE, BLACK; Benum test RED, YELLOW=4, BLUE, BLACK; Cenum test RED=-1,YELLOW, BLUE, BLACK; Denum test RED, YELLOW=6, BLUE, BLACK; 19有如下(rúxià)程序段: int i=1; while(1) i+; if(i=10) break; if(i%2=0) cout<<'*' 执行这个程序段输出字符*的个数是 。 A10 B3 C4 D5 20数组arr的定义如下: int arr5=1,2,3,4,5; 以下语句中输出结果不是2的是 。 Acout << *arr+1 << endl; Bcout << * (arr+1) << endl; Ccout << arr1 << endl; Dcout << *art << endl; 21计算斐波那契数列第n项的函数定义如下: int fib(int n) if(n=0) return 1; else if(n=1) return 2; else return fib(n-1)+fib(n-2); 假设执行函数调用表达式fib(2),函数fib被调用的次数是 。 A1 B2 C3 D4 22Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是 。 Sample a2, *P = new Sample; A0 B1 C2 D3 23以下关于虚基类的描述中,错误的选项是 。 A使用虚基类可以消除由多继承产生的二义性 B构造派生类对象时,虚基类的构造函数只被调用一次 C声明“class B : virtual public A说明类B为虚基类 D建立派生类对象时,首先调用虚基类的构造函数 24将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是 。 A不合法的运算符 B一元运算符 C无操作数的运算符 D二元运算符 25有如下模板声明: template < typename T1, typename T2> class A; 以下声明中,与上述声明不等价的是 。 Atemplate <class T1, class T2> class A; Btemplate <class T1, typename T2> class A; Ctemplate <typename T1, class T2> class A; Dtemplate <typename T1, T2> class A; 26以下(yxià)关于C+流的描述中,错误的选项是 。 Acout>>'A'表达式可输出字符A Beof()函数可以检测是否到达文件尾 C对磁盘文件进行流操作时,必须包含头文件fstream D以ios_base:out模式翻开的文件不存在时,将自动建立一个新文件 27有如下程序: # include <iostream> using namespace std; class Toy public: Toy(char* _n) strcpy(name, _n); count+; Toy() count-; char* GetName() return name; static int getCount() return count; private: char name10; static int count; ; int Toy:count=0; int main() Toy t1("Snoopy"), t2("Mickey"), t3("Barbie"); cout<<t1.getCount()<<endl; return 0; 运行时的输出结果是 。 A1 B2 C3 D运行时出错 28有如下程序: # include <iostream> using namespace std; class A public: A(int i) : r1(i) void print() cout<<'E'<<r1<<'-' void print() const cout<<'C'<<r1*r1<<'-' pivate: int r1; ; int main() 日 A a1(2); const A a2(4); a1.print(); a2.print(); return 0; 运行(yùnxíng)时的输出结果是 。 A运行时出错 BE2-C16- CC4-C16- DE2-E4- 29有如下程序: # include <iostream> using namespace std; class Name char name20; public: Name() strcpy(name, ""); cout<<'?' Name(char *fname) strcpy(name,fname); cout<<'?' ; int main() Name names3=Name("张三"), Name("李四"); return 0; 运行此程序输出符号?的个数是 。 A0 B1 C2 D3 30有如下程序: # include <iostream> using namespace std; class AA public: AA() cout<<'1' ; class BB: public AA int k; public: BB() : k(0) cout<<'2' BB(int n) : k(n) cout<<'3' ; int main() BB b(4), c; return 0; 运行时的输出结果是 。 A1312 B132 C32 D1412 31有如下程序: # include <iostream> using namespace std; class C1 public: C1() cout<<1; ; class C2: public C1 public: C2() cout<<2; ; int main() C2 cb2; C1 *cb1; return 0; 运行(yùnxíng)时的输出结果是 。 A121 B21 C211 D12 32有如下程序: # include <iostream> using namespace std; class Publication /出版物类 char name30; public: Publication(char *name="未知名称") strcpy(this->name,name); const char * getName()const return name; virtual const char * getType()const return "未知类型" ; class Book: public Publication /书类 public: Book(char *name): Publication(name) virtual const char * getType()const return "书" ; void showPublication( Publication &p) cout<<p.getType()<<": "<<p.getName()<<endl; int main() Book book("精彩人生"); showPublication(book); return 0;