收藏 分销(赏)

全国计算机等级考试二级C笔试试题.docx

上传人:快乐****生活 文档编号:10595362 上传时间:2025-06-04 格式:DOCX 页数:15 大小:20.41KB 下载积分:8 金币
下载 相关 举报
全国计算机等级考试二级C笔试试题.docx_第1页
第1页 / 共15页
全国计算机等级考试二级C笔试试题.docx_第2页
第2页 / 共15页


点击查看更多>>
资源描述
2021年3月 二级C++真题及参考答案 一、选择题〔每题2分,共70分〕  〔11〕对C++编译器区分重载函数无任何意义的信息是     A〕参数类型     B〕参数个数     C〕返回值类型     D〕常成员函数关键字coast     〔12〕有如下类定义和变量定义:     class A{     publie:     A〔〕{data=0;}     ~A〔〕{}     int GetData 〔 〕 coast { return data;}     void SetData〔int n〕  {data=n;}     private:     int data;     };     ccnst A a;     A b;     以下函数调用中错误的选项是     A〕a .GetData〔〕;     B〕a .SetData〔10〕;     C〕b .GetData〔〕;     D〕b .SetData〔10〕;     〔13〕有如下类定义和变量定义:     class Parents{     public:     int publicuata;     private:     int privateData;     };     class ChildA:public Parents{/*类体略*/};     class ChildB:private Parents{/*类体略*/〕;     ChildA a;     ChildBb;     以下语句中正确的选项是     A〕cout<<a.publicData <<endl ;     B〕cout<<a.privateData <<endl ;     C〕cout<<b.publicData <<endl ;     D〕cout<<b.privateData <<endl ;     〔14〕运算符重载时不需要保持的性质是     A〕操作数个数     B〕操作数类型     C〕优先级     D〕结合性     〔15〕以下关于函数模板的描述中,错误的选项是     A〕从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准     B〕对于常规参数所对应的模板实参,任何情况下都不能省略     C〕虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参     D〕模板参数表不能为空     〔16〕要建立文件流并翻开当前目录下的文件用于输入,以下语句中错误的选项是     A〕ifstream fin=ifstream.open〔“〞〕;     B〕ifstream*fir.=new ifstream〔“〞〕;     C〕ifstream fin; fin.open〔“〞〕;     D〕ifstream *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;     }     运行时的输出结果是     A〕44                 B〕41                C〕88               D〕81     〔19〕有如下程序段:     int i=5;     while〔int i=0〕{cout?'*';i--;}     运行时输出“*〞的个数是     A〕0                  B〕1                 C〕5                D〕无穷     〔20〕己知有数组定义     char a[3][4];     以下表达式中错误的选项是     A〕a[2]=“WIN〞     B〕strcpy〔a[2],“WIN〞〕     C〕a [2][3]='W'     D〕a[0][1]=a[0][1]     〔21〕函数fun的原型为     int fun〔int,int,int〕;     以下重载函数原型中错误的选项是     A〕char fun〔int,int〕;     B〕double  fun〔int,int,double〕;     C〕int fun〔int,char*〕;     D〕float  fun 〔int, int, int〕;     〔22〕建立一个类对象时,系统自动调用     A〕析构函数     B〕构造函数     C〕静态函数     D〕友元函数     〔23〕通过派生类的对象可直接访问其     A〕公有继承基类的公有成员     B〕公有继承基类的私有成员     C〕私有继承基类的公有成员     D〕私有继承基类的私有成员     〔24〕己知表达式++a中的“++〞是作为成员函数重载的运算符,那么及十+a等效的运算符函数调用形式为     A〕a .orerator++〔1〕     B〕operator++〔a〕     C〕operator++〔a,l〕     D〕a.operator++〔 〕     〔25〕在定义一个类模板时,模板形参表是用一对括号括起来的,所采用的括号是     A〕〔 〕     B〕[ ]     C〕< >     D〕{ }     〔26〕当使用ifstream流类定义一个流对象并翻开一个磁盘文件时,文件的默认翻开方式为     A〕ios_base::in     B〕ios_base::in|ios_base::out     C〕ios_base::out     D〕ios_base::in&ios_base::out     〔27〕有如下程序:     #include<iostream>     #include<cstring>     using namespace std;     class XCD{     char* a;     int b;     public:     XCD〔char* aa, int bb〕{     a=new char[strlen〔aa〕+1];     strcpty〔a,aa〕;     b=bb;     }     Char*  Geta 〔〕{return a;〕     int  Getb〔〕{ return b;}     };     int main〔〕{     char *pl=“abcd〞,*p2=“weirong〞;     int dl=6, d2=8;     XCD x〔pl,dl〕,Y〔p2,d2〕;     cout<<strien 〔x .Geta〔〕〕+y. Getb〔〕+endl;     return 0;     }     运行时的输出结果是     A〕12     B〕16     C〕14     D〕11     〔28〕有如下程序:     #include<iostream>     #include<cstring>     using namespace std;     class XCF{     int a;     public:     XCF〔int aa=0〕:a 〔aa〕{cout<<“1〞;}     XCF〔XCF& x〕{a=x .a;  cout<<“2〞;〕     ~XCF〔〕{cout<<a;}     int  Geta〔〕{return a;}     };     int main〔〕{     XCF dl〔5〕,d7 〔dl〕;     XCF *pd=new XCF〔8〕;     cout<<pd一>Geta〔〕;     delete pd;     return 0;     }     运行时的输出结果是     A〕121SS88     B〕12188SS     C〕12185     D〕128512     〔29〕类MyClass声明如下:     class MyClass{     int n;     public;     MyClass〔int k〕:n〔k〕{}     int getValue〔〕const{return n;}     };     在以下数组定义中正确的选项是     A〕MyClass x1[2];     B〕MyClass x2[2]={new MyClass〔1〕,new MyClass〔2〕};     C〕MyClass *x3[2];     D〕MyClass *x4[2]={MyClass〔1〕,MyClass〔2〕};     〔30〕有如下程序:     #include<iostream>     using namespace std;     class  AA{     lilt   k;     protected:     int    n;     void setK〔int k〕{ this->k=k;}     public:     void setN〔int 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 .setK〔4〕;     return 0;     }     在标注号码的四条语句中正确的选项是     A〕1     B〕2     C〕3     D〕4     〔31〕有如下类定义:     class XX{     int  xx;     public:     XX〔〕:xx〔0〕{cout<<' A';}     XX〔int  n〕:xx 〔 n〕{tout<<' B';}     };     Class YY:public XX{     Int yy;     public:     YY〔〕:yy 〔 0〕{cout+yy;}     YY〔int n〕:XX〔n+1〕,yy〔n〕{cout<<yy;}     YY 〔int  m,   int  n〕:XX 〔m〕,yy〔n〕{cout<<yy;}     };     以下选项中,输出结果为A0的语句是     A〕YY y1〔0,0〕;     B〕YY y2〔1〕;     C〕YY  y3〔0〕;     D〕YY  y4;     〔32〕有如下程序:     #include<iostream>     Using namespace std;     class A{     public:     virtual void f〔〕{cout+1;}     void g〔〕{cout<<2;}     };     class B:public A{     public:     virtual void f〔〕{cout<<3;}     void g〔〕{ecut<<4;}     };     void show〔A &a〕{a.f〔〕;a.g〔 〕;}     int main〔〕{     B b;     show〔b〕;     return 0;     }     运行时的输出结果是     A〕12     B〕34     C〕14     D〕32     〔33〕有如下程序:     #include<iostream>     using namespace std;     class Pair{     int m;     int n;     public:     Pair〔int i,int j〕:m〔i〕,n〔j〕{}     boot operator >〔pair p〕const;   //须在类体外给出定义     };     int main〔〕{     Pair Al〔3,4〕,p2〔4,3〕;p3〔4,5〕;     Cout<<〔pl>p2〕<<〔P2>P1〕<<〔p2>p3〕<<〔p3>p2〕;     return 0;     }     运算符函数。operator>的功能是比拟两个Pair对象的大小,当左边对象大时,返回true,否那么返回false。比拟规那么是首先比拟两对象的m成员,m大者为大;当m相等时比拟n,n大者为大。程序输出0101,以下对运算符重载函数的正确定义是     A〕bool Pair::operator>〔Pair p〕const     {if 〔m!=p.m〕 return m>p.m; return n>p.n;}     B〕bool Pair:;operator>〔Pair p〕     {if 〔m!=p.m〕 return m>p.m; return n>p.n;}     C〕bool Pair::operator>〔Pair p〕const     {if 〔m>p.m〕 return true; return n>p.n;}     D〕bool Pair:;operator>〔Pair p〕     {if 〔m>p.m〕 return true; return n>p.n;}     〔34〕假定以下语句都是程序运行后首次执行的输出语句,其中输出结果及另外三条语句不同的语句是     A〕cout<<setfill〔'*’〕<<123<<setw〔9〕<<321;     B〕cout<<setfill〔‘*’〕<<setw〔6〕<<left<<123<<setw〔6〕<<right<<321;     C〕cout<<123<<setfill〔‘*’〕<<setw〔6〕<<321;     D〕cout<<setfill〔‘*’〕<<SetW〔9〕<<left<<123<<321;     〔35〕有如下程序:     #include<iostream>     using namespace std;     class ONE{     int c;     public:     ONE〔〕:c〔0〕{cout<<1;}     ONE〔int n〕:c 〔n〕{cout<<2;}     };     class TWO{     ONE onel;     ONE one2;     public:     TWO〔int m〕:one2〔m〕{cout<<3;}     };     int main〔〕t     TWO t〔4〕     return 0     }     运行时的输出结果是     A〕3     B〕23     C〕123     D〕213     二、填空题〔每空2分,共30分〕      〔6〕有如下程序段:     int x=1,Y=2,z=3;     x=x^z;     y=y^z;     z=x^y;     cout<<x<<y<<z;     执行这个程序段的输出是【6】。     〔7〕有如下程序段:     fer〔int i=1; i<=50;i++〕{     if〔i%3 != 0〕     continue;     else     if〔i%5!=0〕     continue;     tout<<i<<“,〞;     }     执行这个程序段的输出是【7】。     〔8〕有如下程序段:     Char  c [20]=“examination〞;     c[4]=0;     cout<<c<<endl;     执行这个程序段的输出是【8】。     〔9〕下面的函数利用递归实现了求1+2+3+……+n的功能:     int sum〔int n〕{     if〔n==0〕     return 0;     else     return n+sum〔n-1〕;     }     在执行sum〔10〕的过程中,递归调用sum函数的次数是【9】。     〔10〕非成员函数应该声明为类【10】函数才能访问该类的私有成员。  〔11〕有如下程序:     #include<iostream>     using namespace std;     class Monitor{     public:     Monitor〔char t〕:type 〔t〕{}     void print〔 〕 const     {cout<<“The type of monitor is〞<<type<<endl;}     private:     char type;     };     class Computer{     public:     Computer〔int i,char c〕: 【11】{}     void Print〔〕const     {cout<<“The computer is〞<<id<<endl;mon.Print〔〕;}     private:     int id;     Monitor mon;     };     const Computer myComputer〔101,'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* getType〔〕const { return “Animal〞;}     virtual char* getVoice〔〕const { return “Voice〞;}     };     Class Dog : public Animal {     public:     char* getType 〔 〕 const {return “Dog〞;}     char* getVoice 〔 〕 const {return “Woof〞}     };     void type〔Animal& a〕 {cout<<a.getType〔〕;}     void speak〔Animal a〕 {cout<<a.getVoice〔〕;}     int main〔 〕 {     Dog d; type 〔d〕;cout<<“ speak〞;speak〔d〕;cout<<endi;     return 0;     }     运行时的输出结果是【12】。     〔13〕补充完整下面的类定义:     const double PI=3 .14;     class Circle{   //圆形物体的抽象基类     protected:     double r;      //半径     public:     Circle〔double radius=0〕:r〔radius〕{}     【13】;//计算圆形物体外表积的纯虚函数声明     };     class Cylinder:public Circle {  //圆柱体类     double h;       //高度     public:     Cylindr〔double radius=0, doubli height=0〕:     Circle〔radius〕,h 〔height〕{}     Virtual double Area〔〕 { //计算圆柱体的外表积     return 2*PI*r*〔r+h〕;     }     };     〔14〕补充完整下面的类定义:     class XCH{     char* a;     public:     XCH〔char* as〕 { //构造函数     a=new char[strlen〔aa〕+1];     strcpy〔a,aa〕;     }     XCH& operator=〔const XCH& x〕     //重载赋值函数     Delele []a;     A=new char[strlen〔x.a〕+l];     strcpy〔a, x .a〕     【14】;     }     ~XCH〔〕 {delete []a;}     };     〔15〕补充完整下面的模板定义:     template<class Type>  //Type为类型参数     class Xtwo{    //由两个Type类型的数据成员构成的模板类     Type a;     Type b;     public:     Xtwe〔Type aa=0, Type bb=0〕:a〔aa〕,b〔bb〕{}     int Ccmpare  〔〕{//比拟a和b的大小     if 〔a>b〕returm 1;     else if〔a==b〕 return 0;     else return -1;     }     Type Snm〔〕 {return a+b;} //返回a和b之和     Type Mult〔〕;         //函数声明,返回a和b之乘积     };     Template<class Type>     【15】::Mult〔〕{return a*b;} //Mult 函数的类外定义          参考 答案    一、 选择题: 〔11〕D    〔12〕B    〔13〕A    〔14〕B    〔15〕B  〔16〕A    〔17〕B    〔18〕C    〔19)  A     〔20〕D  〔21〕D    〔22〕B    〔23〕A    〔24〕B     〔25〕C   〔26〕B    〔27〕A    〔28〕B    〔29〕C    〔30〕B  〔31〕D    〔32〕D    〔33〕C    〔34〕C    〔35〕B   二、填空题 〔6〕213 〔7〕15,30,45 〔8〕examination〔9〕10 〔10〕友元 〔11〕id〔i〕,mom〔c〕    〔12〕Dog speak Woof    〔13〕Virtual double Area〔〕{ return PI *r*r}  〔14〕return *a   〔15〕Xwo<Type> 2021年9月二级C++笔试试卷 〔11〕函数FA调用FB,假设要把这两个函数定义在同一个文件中,那么〔 〕。 A〕FA必须定义在FB之前 B〕FB必须定义在FA之前 C〕假设FA定义在FB之后,那么FA的原型必须出现在FB的定义之前 D〕假设FB定义在FA之后,那么FB的原型必须出现在FA的定义之前 〔12〕有如下两个类定义: class AA{}; class BB { AA v1,*v2; BB v3; int *v4; }; 其中有一个成员变量的定义是错误的,这个变量是〔 〕。 A〕v1 B〕v2 C〕v3 D〕v4 〔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类的对象包含的数据成员的个数是〔 〕。 A〕1 B〕2 C〕3 D〕4 〔14〕以下关于运算符函数的描述中,错误的选项是〔 〕。 A〕运算符函数的名称总是以operator为前缀 B〕运算符函数的参数可以是对象 C〕运算符函数只能定义为类的成员函数 D〕在表达式中使用重载的运算符相当于调用运算符重载函数 〔15〕以下关于模板形参的描述中,错误的选项是〔 〕。 A〕模板形参表必须在关键字template之后 B〕模板形参表必须用括弧()括起来 C)可以用class修饰模板形参 D〕可以用typename修饰模板形参 〔16〕在以下枚举符号中,用来表示“相对于当前位置〞文件定位方式的是〔 〕。 A〕ios_base::cur B〕ios_base::beg C〕ios_base::out D〕ios_base::end 〔17〕以下字符串中可以用作C++标识符的是〔 〕。 A〕2021var B〕goto C〕test-2021 D〕_123 〔18〕以下枚举类型的定义中,包含枚举值3的是〔 〕。 A〕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〕有如下程序段: int i=1; while(1) { i++; if(i==10) break; if(i%2==0) cout<<'*'; } } 执行这个程序段输出字符*的个数是〔 〕。 A〕10 B〕3 C〕4 D〕5 〔20〕数组arr的定义如下: int arr[5]={1,2,3,4,5}; 以下语句中输出结果不是2的是〔 〕。 A〕cout << *arr+1 << endl; B〕cout << * (arr+1) << endl; C〕cout << arr[1] << endl; D〕cout << *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被调用的次数是〔 〕。 A〕1 B〕2 C〕3 D〕4 22〕Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是〔 〕。 Sample a[2], *P = new Sample; A〕0 B〕1 C〕2 D〕3 〔23〕以下关于虚基类的描述中,错误的选项是〔 〕。 A〕使用虚基类可以消除由多继承产生的二义性 B〕构造派生类对象时,虚基类的构造函数只被调用一次 C〕声明“class B : virtual public A〞说明类B为虚基类 D〕建立派生类对象时,首先调用虚基类的构造函数 〔24〕将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是〔 〕。 A〕不合法的运算符 B〕一元运算符 C〕无操作数的运算符 D〕二元运算符 〔25〕有如下模板声明: template < typename T1, typename T2> class A; 以下声明中,及上述声明不等价的是〔 〕。 A〕template <class T1, class T2> class A; B〕template <class T1, typename T2> class A; C〕template <typename T1, class T2> class A; D〕template <typename T1, T2> class A; 〔26〕以下关于C++流的描述中,错误的选项是〔 〕。 A〕cout>>'A'表达式可输出字符A B〕eof()函数可以检测是否到达文件尾 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 name[10]; static int count; }; int Toy::count=0; int main(){ Toy t1("Snoopy"), t2("Mickey"), t3("Barbie"); cout<<t1.getCount()<<endl; return 0; } 运行时的输出结果是〔 〕。 A〕1 B〕2 C〕3 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; } 运行时的输出结果是〔 〕。 A〕运行时出错 B〕E2-C16- C〕C4-C16- D〕E2-E4- 〔29〕有如下程序: # include <iostream> using namespace std; class Name{ char name[20]; public: Name(){ strcpy(name, ""); cout<<'?'; } Name(char *fname){ strcpy(name,fname); cout<<'?'; } }; int main(){ Name names[3]={Name("张三"), Name("李四")}; return 0; } 运行此程序输出符号?的个数是〔 〕。 A〕0 B〕1 C〕2 D〕3 〔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; } 运行时的输出结果是〔 〕。 A〕1312 B〕132 C〕32 D〕1412 〔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; } 运行时的输出结果是〔 〕。 A〕121 B〕21 C〕211 D〕12 〔32〕有如下程序: # include <iostream> using namespace std; class Publication{ //出版物类 char name[30]; 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; } 运行时的输出结果是〔 〕。 A〕未知类型:未知名称 B〕未知类型:精彩人生 C〕书:未知名称 D〕书:精彩人生 〔33〕以下关于运算符重载的描述中,错误的选项是〔 〕。 A〕::运算符不能重载 B〕类型转换运算
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服