全国计算机二级C等级考试真题及答案.doc

上传人:s****u 文档编号:12812830 上传时间:2020-05-26 格式:DOC 页数:43 大小:254.50KB
返回 下载 相关 举报
全国计算机二级C等级考试真题及答案.doc_第1页
第1页 / 共43页
全国计算机二级C等级考试真题及答案.doc_第2页
第2页 / 共43页
全国计算机二级C等级考试真题及答案.doc_第3页
第3页 / 共43页
点击查看更多>>
资源描述
2007年9全国计算机等级考试二级笔试试卷一、选择题(每小题2分,共70分)(11)在函数中,可以用auto,extem,register,和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是 A A auto B extem C register D static(12)对于一个类定义,下列叙述中错误的是 B A 如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数 B 如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数 C 如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数 D 如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数(13)如果派生类以public方式继承基类,则原基类的protected成员和public成员在派生类中的访问类型分别是 D A public和 public B public和protected C protected 和 public D protected 和 protected(14)下列运算符函数中肯定不属于类FunNumber的成员函数的是 D A int operator-(FunNumber) B FunNumber operator-() C FunNumber operator-(int) D int operator (FunNumber)(15)C+中的模板包括 C A 对象模板和函数模板 B 对象模板和类模板 C 函数模板和类模板 D 变量模板和对象模板(16)如果调用C+流进行输入输出,下面的叙述中正确的是 A A 只能借助于流对象进行输入输出 B 只能进行格式化输入输出 C 只能借助于cin和cout进行输入输出 D 只能使用运算符 和 进行输入输出(17)下列符号中不属于C+关键字的是 D A friend B namespace C continue D byte(18)下列各组的量申明中,含义相同的一组是 B A unsigned long int 和 long B signed short int 和 short B unsigned short 和 short D short int 和int(19) 必须用一对打括号括起来的程序段是 D A switch 语句中的case标号语句 B if 语句的分支 C 循环语句的循环体 D 函数的函数体(20)语句的int*p=&k定义于指针P,于这个语句等效的语句序列是 A A int*p;p=&k B int*p;p=k C int*p;*p=&k D int*p;*p=k(21)关于函数重载,下列叙述中错误的是 C A 重载函数的函数名必须相同 B 重载函数必须在函数个数或类型上有所不同 C 重载函数的返回值类型必须相同 D 重载函数的函数体可以有所不同(22)有如下头文件 Int f1(); Static int f2(); Class MA Public Int f3(); Static int f4();(静态函数) ;在所描述的函数中,具有隐含的this指针的是 C A f1 B f2 C f3 D f4(23)派生类的成员函数不能访问基类的 C A 共有成员和保护成员 B 共有成员 C 私有成员 D 保护成员(24)下列关于运算符重载的描述中,正确的是 A A 运算符重载为成员函数时,若参数表中五参数,重载的是一元运算符 B 一元运算符只能作为成员函数重载 C 二元运算符重载为非成员函数时,参数表中有一个参数 D C+中可以重载所有的运算符(25)下列关于类模板的模板参数的叙述中,错误的是 D A 模板参数可以作为数据成员的类型 B 模板参数可以作为成员函数的返回类型 C 模板参数可以作为成员函数的参数类型 D 模板函数不能作为成员函数的局部变量的类型(26)已知一程序运行后执行的第一个输出操作是 B Coutsetw(10)setfill(*)1234 则此操作的输出结构是 A 1234 B *1234 C *1234 D 1234*(27)有如下程序 #include Using namespace std; Class myclass Public: MyClass()+count; MyClass()-count; Static int getcount()return count;Private Static int count;Int MyClass:count=0;Int main() Myclass obj; Coutobj,getCount(); MyClass*ptr=new MyClass; CoutMyClass:getcount(); Delete ptr; CoutMyClass:gercount(); Return(); 程序的输出结果是 AA 121 B 232 C 221 D 122程序的输出结果是 C A val=10 const:val=20 B const:val=10 const:val=20 C const:val=10 val=20 D val=10 val=20(29)有如下程序 #include Using namespace std; Class part Public; Part(int x=():val(x)coutval; -part()coutval; Private; Int val; ; Class whole Public; Whole(int x,int y,int z=0):p2(x),p1(y),val(z)coutval; Whole()countval; Private; Part p1,p2; Int val; ; Int maint Whole obj(1,2,3); Resturn(); 程序输出的结果是 DA 123321 B 213312 C 213 (30) 有如下程序: #include Using namespace std; Class base Public: Base(int x=0)coutx; ; Class derived : public base Public: Derivedrin(x=y)coutx; Priblic: Base val; ; Int main() Derived d(!); Return(); 程序的输出结果是 C A 0 B 1 C 01 D 001(31)若有如下类定义: Classs B Void fun1() Protected; Double varl; Public: Void fun2() ; Class D:public B Protected; Void fun3() ;已知obj是类D的对象,下列语句中不违反成员访问控制的权限的是 C A obj.fun1(); B obj.var1; C obj.fun2(); D obj.fun3();(32)有如下程序: #include Using namespace sid; Class base Public; Void output()cout1; Virtual void print() coutB; ; Class derived:public base Public: Void output()cout2; Void print()coutoutput(); Ptr-print(); Delete ptr; Return(); 程序的输出结果是 D A 1B B 1D C 2B D 2D33.下列是重载乘法运算的函数原型声明,其中错误的是 A A myclass operator*(double,double);B myclass operator*(double,myclass);C myclass operator*(myclass,double);D myclass operator*( myclass , myclass);*是二元运算符,而且标准库里面已经有double*double的运算符定义,返回值为double,所以A的重载是错误的 34.A (35) 有如下程序: #include using namespace std; class B public: virtual void show()coutb; ; class D:public B public: void show()coutshow(); void fun2(B &ref)ref.show(); void fun3(B b)b.show(); void main() B b,*p=new D; D d; fun1(p); fun2(b); fun3(d); 程序的输出结果是 D A DBD B BBD C DBB D Dbb二、填空题(每空2分,共三十分)(6).在有定义语句:int a=3,b=2,c=1;则表达式ab?a:b的值是_(7).执行下列语句后,变量sum的值是_.Int sum =0;For (int j=I;j=I;j+) For (int j=I;j=I;j+) Sum+;(8).已知有函数f的定义如下: Int f() Static int -6; s-2; return s 则在某程序中第二次执行函数用语句f();时,函数f的返回值是_.(9)已知如下程序得输出结果时23,请将划线处缺失得部分补充完整。 #include Using namespace std; Class myclass Public: Void print() coutcout23; Int main() Myclass*p=new myclass(); _print(); Return(); Class sample Public: Sample() _ (14)请将如下程序补充完整,使得输出结果为bbaa #include Using namespace std; Class A Public: _cout”aa”; ; Class B :public A Public: B()cout”bb”; ; Int main () B*p=new B; Delete p; Return(); (15)请将下列栈类stack补充完整 Class stack Private; Int plist100; /int 数组,用于存放栈的元素 Int top; /栈顶元素(数组下标) Public: Stack():top(0) Void push(sons int &item); /新元素item压入栈 Int pop(void); /将栈顶元素弹出栈 ; Void stack:pbsh(const int &item) If (top =99) /如果栈满,程序结束 Exit(1); Top+; /栈顶指针增1 _【15】_; Int stack:pop() If (top0) /如果栈空,程序结束 Exit(1); Return plishtop-; 参考答案6.2 7.6 8.4 9.(*p) 10.ABBA 11.void Base:fun()12.virtual display()=0; 14.-A() 15.pListtop=item2008年9月计算机等级考试一、选择题(每小题2分,共70分)(11)在下列原型所示的 C+函数中,按“传值”方式传递参数的是(A)。A)void f1(int x); B)void f2(int*x); C)void f3(const int*x); D)void f4(int&x);(12)在 C+中,编译系统自动为一个类生成缺省构造函数的条件是(A)。A)该类没有定义任何有参构造函数 B)该类没有定义任何无参构造函数C)该类没有定义任何构造函数 D)该类没有定义任何成员函数(13)在一个派生类的成员函数中,试图调用其基类的成员函数“void f();”,但无法通过编译。这说明(C)。A)f()是基类的私有成员 C)派生类的继承方式为私有B)f()是基类的保护成员 D)派生类的继承方式为保护(14)下列关于运算符重载的叙述中,错误的是(B)。A)有的运算符可以作为非成员函数重载B)所有的运算符都可以通过重载而被赋予新的含义C)不得为重载的运算符函数的参数设置默认值D)有的运算符只能作为成员函数重载(15)下列关于模板的叙述中,错误的是(D)。A)调用模版函数时,在一定条件下可以省略模板实参B)可以用 int、double 这样的类型修饰符来声明模版参数C)模板声明中的关键字 class 都可以用关键字 typename 替代D)模板的形参表中可以有多个参数(16)要利用 C+流进行文件操作,必须在程序中包含的头文件是(B)。A)iostreamB)fstream C)strstreamD)iomanip(17)下列字符串中不能作为 C+标识符使用的是(B)。A)WHILE B)user C)_lvar D)9stars(18)下列语句中错误的是(D)。A)const int a; B)const int a=10; C)const int*point=0; D)const int*point=new int(10);(19)有如下程序:#includeusing namespace std;int main()int sum;for(int i=0; i6; i+=3)sum=i; for(int j = i; j6; j+)sum+=j; coutsumend1; return 0;运行时的输出结果是(A)。A)3B)10 C)12 D)15(20)下列语句中,正确的是(D)。A)char*myString=Hello-World!; B)char myString=Hello-World!;C)char myString11=Hello-World!; D)char myString12=Hello-World!;(21)若已经声明了函数原型“void fun(int a, double b=0.0);”,则下列重载函数声明中正确的是(C)。A)void fun(int a=90, double b=0.0); B)int fun(int a, double B); C)void fun(double a, int B); D)bool fun(int a, double b = 0.0);(22)有如下程序:#includeusing namespace std;class Samplepublic:Sample() Sample()cout*;int main()Sample temp2, *pTemp2; return 0;执行这个程序输出星号(*)的个数为(B)。A)1B)2C)3D)4(23)下列选项中,与实现运行时多态性无关的是(A)。A)重载函数B)虚函数 C)指针D)引用(24)下列运算符函数中,肯定不属于类 Value 的成员函数的是(B)。A)Value operator+(Value); B)Value operator-(Value, Value);C)Value operator*(int); D)Value operator/(Value); (25)下列模板声明中,有语法错误的是(D)。A)templateT fun(T x)return x;B)templateT fun(T x, int n)return x*n;C)templateT fun(T *p)return *p;D)templateT classAT n;(26)在语句“coutA;”中,cout 是(B)。A)类名B)对象名 C)函数名D)C+的关键字(27)有如下程序:#includeusing namespace std;class MyClass public:MyClass(int i=0)cout1;MyClass(const MyClass&x)cout2;MyClass& operator=(const MyClass&x)cout3; return*this; MyClass()cout4;int main()MyClass obj1(1),obj2(2),obj3(obj1); return 0:运行时的输出结果是(A)。A)112444 B)11114444 C)121444D)11314444(28)有如下程序:#includeusing namespace std;class MyClass public:MyClass(int x):val(x)void Set(int x)val=x; void Print()constcoutval=val=b 中的“=”是作为非成员函数重载的运算符,则可以等效地表示为(A)。A)a.operator=(b) B)b.operatotr=(a) C)operator=(a,b))operator=(b,a)(34)当使用 ofstream 流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为(B)。A)ios base:in B)ios_base:binary C)ios_base:in|ios_base:out D)ios_base:out(35)在一个抽象类中,一定包含有(C)。A)虚函数 B)纯虚函数 C)模板函数D)重载函数二、填空题(每空2分,共30分) (6)当使用关键字_void_作为函数返回类型时,该函数不返回任何值。(7)已知数组 a 中有 n 个元素,下列语句将数组 a 中从下标 x1 开始的 k 个元素移动到从下标 x2 开始的 k 个元素中,其中 0=x1x2n,x2+k=x1; i-)a_x2+k-1_=ai; (8)有如下程序:#includeusing namespace std;int fun1(int x)return+x; int fun2(int &x) return+x;int main()int x=1,y=2; y=fun 1(fun2(x);coutx,y; return 0: 程序的输出结果是_2,3_。(9)有如下程序:#includeusing namespace std;class pumpkin public:pumpkin()+count;pumpkin()-count;static void total_count()coutcountpumpkin(s)endl; private: static int count; ;int pumpkin:count=0;int main()pumpkin pl10;pumpkin:total_count();return 0; 这个程序的输出结果是_10pumpkin(s)_。(10)有如下递归函数:int Fun(int n) if(n=1)return 1;_else return n*Fun(n-1);_请补充完整,使得函数 Fun 能够正确计算形参 n 的阶乘。(11)请在下列程序中的空格处填写正确的语句:class Samplepublic:Sample() Sample() void SetData(int data) /将 Sample 类成员变量 data 设置成形参的值_Sample:data=data_ /注意形参与成员同名 private: int data;(12)有如下类定义,请将Sample类的拷贝构造函数补充完整。class Samplepublic:Sample()Sample() if(p) delete p;)Sample (const Sample& s)_p=new int;*p=s.*p_ void SetData(int data)p=new int(data);private: int*p; ;(13)重载加法运算符“+”,其函数名是_operator +_。(14)有如下程序:#include using namespace std;class Wages /工资类double base; /基本工资double bonus; /奖金double tax; /税金public: Wages(double CBase, double CBonus, double CTax):base(CBase), bonus(CBonus), tax(CTax)double getPay()const; /返回应付工资额Wages operator+(Wages w)const; /重载加法;double Wages:getPay()constreturn base+bonus-tax;Wages Wages:operator+(Wages w)const return Wages(base+w.base, bonus+w.bonus, tax+w.tax);int main()Wages wl(2000,500,100),w2(5000,1000,300);cout(wl+w2).getPay()endl; return 0;(15)有如下程序:#includeusing namespace std;class Petchar name10;public:Pet(char*name)strcpy(this-name, name);const char*getName()const return name;virtual void call()const=0; class Dog: public Petpublic:Dog(char*name):Pet(name)void call()constcout汪汪叫;class Cat:public Petpublic:Cat(char*name):Pet(name)void call()constcout喵喵叫;int main()Pet *pet1=new Dog(哈克), *pet2=new Cat(吉米);coutgetName();pet1-call();coutend1;coutgetName();pet2-call();coutend1;return 0;程序的输出结果是_哈克汪汪叫_吉米喵喵叫_2008年9月二级 C+笔试试卷参考答案二、填空题(6)void (7)X2+k-1 (8)2,3 (9)10pumpkin(s) (10)else return n*Fun(n-1);(11)Sample:data (12)p=new int; *p=s.*p; (13)operator + (14)81002009年9月全国计算机二级笔试C+1、 选择题(1-10,21-40每题2分,11-20每题1分)(11) 已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则 DA)FA必须定义在FB之前 B)FB必须定义在FA之前C)若FA定义在FB之后,则FA的原型必须出现在FB的定义之前D)若FB定义在FA之后,则FB的原型必须出现在FA的定义之前(12)有如下两个类定义 Cclass AA;class BB AA v1,*v2; BB v3; int *v4;其中有一个成员变量的定义是错误的,这个变量是A)v1 B)v2 C)v3 D)v4由于AA和BB都是类的定义,在类定义中无法声明一个自己的对象,所以在BB的类定义中,企图声明一个BB类的对象,是非法的。(13)有如下类定义: Bclass 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类的对象包含的数据成员的个数是A)1 B)2 C)3 D)4(14) 下列有关运算符函数的描述中,错误的是 CA)运算符函数的名称总是以operator为前缀B)运算符函数的参数可以是对象C)运算符函数只能定义为类的成员函数(友元函数)D)在表达式中使用重载的运算符相当于调用运算符重载函数(15)下列关于模板形参的描述中,错误的是 BA)模板形参表必须在关键字template之后B)模板形参表必须用括弧( )括起来C)可以用class修饰模板形参D)可以用typename修饰模板形参(16)在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是 AA)ios_base:cur B)ios_base:beg C)ios_base:out D)ios_base:end(17)下列字符串可以用作C+标识符的是 DA)2009var B)goto C)test - 2009 D)_123(18)下列枚举类型的定义中,包含枚举值3的是 AA)enum test RED, YELLOW, BLUE, BLACK;B)enum test RED, YELLOW=4, BLUE, BLACK;C)enum test RED=-1, YELLOW,BLUE, BLACK;D)enum test RED, YELLOW=6, BLUE, BLACK;(19)有如下程序段: Cint i=1;while (1) i+; if(i = 10) break; if(i%2 = 0) cout *;执行这个程序段输出字符*的个数是A)10 B)3 C)4 D)5(20)已知数组arr的定义如下: Dint arr5 = 1,2,3,4,5;下列语句中输出结果不是2的是A)cout *arr+1 endl; B)cout *(arr+1)endl; C)cout arr1 endl;D)cout *arr endl; (21)计算斐波那契数列第n项的函数定义如下:BInt 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被调用的次数是A)1 B)2 C)3 D)4(22)Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是 DSample a2, *p = new Sample;A)0 B)1 C)2 D)3(23)下列关于虚基类的描述中,错误的是 CA)使用虚基类可以消除由多继承产生的二义性B)构造派生类对象时,虚基类的构造函数只被调用一次C)声明“class B : virtual public A”说明类B为虚基类D)建立派生类对象时,首先调用虚基类的构造函数(24)将运算符重载为类成员函数时,其参数表中没有参数,说明该运算是 BA)不合法的运算符 B)一元运算符 C)无操作数的运算符 D)二元运算符(25)有如下模板声明: Dtemplateclass A;下列声明中,与上述声明不等价的是A)template class A; B)template class A;C)template class A; D)template class A;(26)下列关于C+流的描述中,错误的是 AA)coutA表达式可输出字符A B)eof()函数可以检测是否到达文件尾C)对磁盘文件进行流操作时,必须包含头文件fstreamD)以ios_base:out模式打开的文件不存在时,将自动建立一个新文件27)有如下程序:C#include using namespace std;class Toypublic: 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 mail() Toy t1(“Snoopy”),t2(“Mickey”),t3(“Barbie”); coutt1.getCount()endl;return 0;运行时的输出结果是A)1 B)2 C)3 D)运行时出错(28)有如下程序 B#includeusing namespace std;class A public: A(int i):rl(i) void print( ) couter1-; void print( ) const coutCr1*r1-;private: int rl;int main() A al(2); const A a2(4); al.print(); a2.print(); return 0;运行时的输出结果是A)运行时出错 B)E2-C16- C)C4-C16- D)E2-E4-29)有如下程序: D#includeusing 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;运行此程序输出符号?的个数是A)0 B)1 C)2 D)3(30)有如下程序: A#includeusing namespace std;public:AA() cout1; ;class BB: public AAint k;public:BB():k(0) cout2; BB(int n):k(n) cout3;int main()BB b(4), c;return 0;运行时的输出结果是A)1312 D)132 C)32 D)141(31)有如下程序:B#includeusing namespace std;class C1public:C1() cout1; ;Class C2: public c1public:c2() cout2; ;int main()C2 cb2;C1 *cb1;return 0;运行时的输出结果是A)121 B)21 C)211 D)12(32)有如下程序 D#includeusing 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)coutp.getType():p.getName()endl;int main()Book book(精彩人生);showPublication(book);return 0;运行时的输出结果是A)未知类型:未知名称 B)未知类型:精彩人生C)书:未知名称 D)书:精彩人生(33)下列关于运算符重载的描述中,错误的是 CA):运算符不能重载B)类型转换运算符只能作为成员函数重载C)将运算符作为非成员函数重载时必须定义为友元D)重载运算符应完成“下标访问”操作(34)有如下程序: B#include#includeUsing namespace std;int main()int s=123, 234;coutrightsetfill(*)setw(6);for(int i=0; i2; i+) coutsiendl; return 0;运行时的输出结果是A)123 B)*123 C)*123 D)*123 234 234 *234 234*(35)有如下类定义 Aclass A char *a;public:A():a(0)A(char *aa) /把aa所指字符串拷贝到a所指向的存储空间a= ;strcpy(a,aa);strcpy(a,aa);A() delete a;横线处应填写的表达式是A)nes charstrlen(aa)+1 B)charstrlen(aa)+1C)charstrlen(aa)
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!