等级考试

9月二级C++笔试

时间:2025-03-05 10:24:00 等级考试 我要投稿
  • 相关推荐

2009年9月二级C++笔试

百分网小编收集整理了2009年9月全国计算机二级笔试C++,请阅读。
一、选择题(1-10,21-40每题2分,11-20每题1分)
(1)下列数据结构中,属于非线性结构的是
A)循环队列B)带链队列C)二叉树D)带链栈
(2)下列数据结构中,能够按照“先进后出”原则存取数据的是
A)循环队列B)栈C)队列D)二叉树
(3)对于循环队列,下列叙述中正确的是
A)队头指针是固定不变的B)队头指针一定大于队尾指针C)队头指针一定小于队尾指针D)队头指针可以大于队尾指针,也可以小于队尾指针
(4)算法的空间复杂度是指
A)算法在执行过程中所需要的计算机存储空间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的临时工作单元数
(5)软件设计中划分模块的一个准则是
A)低内聚低耦合B)高内聚低耦合C)低内聚高耦合D)高内聚高耦合
(6)下列选项中不属于结构化程序设计原则的是
A)可封装B)自顶向下C)模块化D)逐步求精
(7)软件详细设计产生的图如下:
该图是
A)N-S图B)PAD图C)程序流程图D)E-R图
(8)数据库管理系统是
A)操作系统的一部分B)在操作系统支持下的系统软件C)一种编译系统D)一种操作系统
(9)在E-R图中,用来表示实体联系的图形是
A)椭圆形B)矩形C)菱形D)三角形
(10)有三个关系R,S,和T如下:
R #FormatTableID_0#
S #FormatTableID_1#
T #FormatTableID_2#
其中关系T由关系R和S通过某种操作得到,该操作为
A)选择B)投影C)交D)并
(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)2009var  B)goto  C)test - 2009  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 << *arr <<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 mail(){
      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):rl(i) { }       void print( ) {cout<<'e'<<r1<<'-';}       void print( ) const {cout<<'C'<<r1*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)有如下程序:
  #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;
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             D)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)类型转换运算符只能作为成员函数重载C)将运算符作为非成员函数重载时必须定义为友元D)重载[]运算符应完成“下标访问”操作 
(34)有如下程序:
#include<iostream>
#include<iomanip>
Using namespace std;
int main(){
int s[]={123, 234};
cout<<right<<setfill('*')<<setw(6);
for(int i=0; i<2; i++) { cout<<s[i]<<endl; }
return 0;
}
运行时的输出结果是
A)123              B)***123           C)***123           D)***123
   234                 234                    ***234           234***
 
(35)有如下类定义
class A {char *a;public:A():a(0){}A(char *aa){  //把aa所指字符串拷贝到a所指向的存储空间
a=                ;strcpy(a,aa);
strcpy(a,aa);
}
~A() {delete []a;}
};
横线处应填写的表达式是
A)nes char[strlen(aa)+1]               B)char[strlen(aa)+1]
C)char[strlen(aa)]                     D)new char[sizeof(aa)-1]
 二、填空题(每空2分,共30分)
 (1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有  【1】  个结点。
 (1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有  【1】  个结点。
 (2)程序流程图中的菱形框表示的是  【2】  。
 (3)软件开发过程主要分为需求分析、设计、编码与测试四个阶段,其中  【3】  阶段产生“软件需求规格说明书”。
(4)在数据库技术中,实体集之间的联系可以是一对一或一对多或多对多的,那么“学生”和“可选课程”的联系为  【4】  。
(5)人员基本信息一般包括:身份证号,姓名,性别,年龄等。其中可以作为主关键字的是  【5】  。
(6)若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为 【6】 。
(7)有如下循环语句:
For(int i=50; i>20; i-=2)  cout<<i<<',';
运行时循环体的执行次数是 【7】 。
(8)利用表达式a[i]可以访问int型数组a中下标为i的元素。在执行了语句int *p=a;后,利用指针p也可访问该元素,相应的表达式是 【8】 。
(9)下面是一个递归函数,其功能是使数组中的元素反序排列。请将函数补充完整。
void reverse(int *a, int size){
if(size<2) return;
int k=a[0];
a[0]=a[size-1];
a[size-1]=k;
reverse(a+1,  【9】 );
}
 
(10)类Sample的构造函数将形参data赋值给数据成员data。请将类定义补充完整。
class Sample{
public:
Sample(int data=0);
Private:
Int data;
};
Sample::Sample(int data){
 【10】
}
 
(11)有如下类定义:
class Sample{
public:
Sample();
~Sample();
Private:
Static int date;
};
将静态数据成员data初始化为0的语句是 【11】 。
 
(12)“图形”类Shape中定义了纯虚函数CalArea(),“三角形”类Triangle继承了类Shape,请将Triangle类中的CalArea函数补充完整。
class Shape{
public:
virtual int CalArea()=0;
}
class Triangle: public Shape{
public:
Triangle{int s, int h}: side(s),height(h) {}
 【12】 { return side*height/2 ; }
private:
    int side;
    int height;
};
 
(13)有如下程序:
#include <iostream>
using namespace std;
class GrandChild{
public:
GrandChild(){ strcpy (name,"Unknown"); }
const char * getName()const { return name; }
virtual char * getAddress()const=0;
private:
char name[20];
};
class GrandSon : public GrandChild{
public:
GrandSon{char *name} {}
Char * getAddress() const { return "Shanghai";}
};
int main(){
GrandChild *gs=new GrandSon("Feifei");
cout<<gs->getName()<<"住在"<<gs->getAddress()<<endl;
delete gs;
return 0;
}
运行时的输出结果是 【13】 。
(14)如下程序定义了“单词”类word,类中重载了<运算符,用于比较“单词”的大小,返回相应的逻辑值。程序的输出结果为:After Sorting: Happy Welcome,请将程序补充完整。
#include <iostream>
#include <string>
using namespace std;
class Word{
public:
Word(string s) : str(s) { }
string getStr(){ return str; }
 【14】 const { return (str<w.str); }
friend ostream& operator << (ostream& output, const Word &w)
{ output<<w.str; return output; }
private:
string str;
};
Int main(){
Word w1("Happy"),w2("Welcome");
Cout<<"After sorting: ";
if(w1<w2) cout<<w1<<' '<<w2;
else cout<<w2<<' '<<w1;
return 0;
}
 
(15)请将下列模板类Data补充完整。
template <typename T>
class Data{
public:
void put (T v) { val=v; }
 【15】 get()   //返回数据成员val的值,返回类型不加转换
{ return val; }
private:
T val;
};
参考答案
选择题  
(1)C +(5)身份证号 (6)double (7)15 (8)*(p+i)
(9)size-1  (10)this->data=data;
(11)int Sample::data = 0;
(12)int CalArea(size,height)
(13)Unknown住在Shanghai
(14)bool operator < (Word w)  (15)T

【9月二级C++笔试】相关文章:

2008年9月二级C++笔试08-07

计算机二级C++语言笔试试卷及答案03-10

计算机二级C++笔试选择题08-13

全国计算机等级考试二级C++笔试题02-06

2010年9月全国计算机二级C++笔试05-31

全国计算机等级考试二级C++笔试真题05-01

计算机等级考试二级C++笔试选择题06-27

2010年3月计算机等级考试二级C++笔试03-06

全国计算机二级考试C++笔试模拟题及答案04-16