首页 - 网校 - 万题库 - 直播 - 雄鹰网校 - 团购 - 书城 - 模考 - 学习通 - 导航 -
首页网校万题库直播雄鹰网校团购书城模考论坛实用文档作文大全宝宝起名
2015中考
法律硕士
2015高考
MBA考试
2015考研
MPA考试
在职研
中科院
考研培训
专升本
自学考试 成人高考
四 六 级
GRE考试
攻硕英语
零起点日语
职称英语
口译笔译
申硕英语
零起点韩语
商务英语
日语等级
GMAT考试
公共英语
职称日语
新概念英语
专四专八
博思考试
零起点英语
托福考试
托业考试
零起点法语
雅思考试
成人英语三级
零起点德语
等级考试
华为认证
水平考试
Java认证
职称计算机 微软认证 思科认证 Oracle认证 Linux认证
公 务 员
导游考试
物 流 师
出版资格
单 证 员
报 关 员
外 销 员
价格鉴证
网络编辑
驾 驶 员
报检员
法律顾问
管理咨询
企业培训
社会工作者
银行从业
教师资格
营养师
保险从业
普 通 话
证券从业
跟 单 员
秘书资格
电子商务
期货考试
国际商务
心理咨询
营 销 师
司法考试
国际货运代理人
人力资源管理师
广告师职业水平
卫生资格 执业医师 执业药师 执业护士
会计从业资格
基金从业资格
统计从业资格
经济师
精算师
统计师
会计职称
法律顾问
ACCA考试
初级会计职称
资产评估师
高级经济师
注册会计师
高级会计师
美国注册会计师
审计师考试
国际内审师
注册税务师
理财规划师
一级建造师
安全工程师
设备监理师
公路监理师
公路造价师
二级建造师
招标师考试
物业管理师
电气工程师
建筑师考试
造价工程师
注册测绘师
质量工程师
岩土工程师
注册给排水
造价员考试
注册计量师
环保工程师
化工工程师
暖通工程师
咨询工程师
结构工程师
城市规划师
材料员考试
消防工程师
监理工程师
房地产估价
土地估价师
安全评价师
房地产经纪人
投资项目管理师
环境影响评价师
土地登记代理人
宝宝起名
缤纷校园
实用文档
入党申请
英语学习
思想汇报
作文大全
工作总结
求职招聘 论文下载 直播课堂
您现在的位置: 考试吧 > 计算机等级考试 > 计算机二级考试 > C加加 > 模拟试题 > 正文

2015年计算机二级考试C++过关练习题及答案(1)

来源:考试吧 2015-10-09 16:24:04 考试吧:中国教育培训第一门户 模拟考场
考试吧整理“2015年计算机二级考试C++过关练习题及答案(1)”供考生参考。更多计算机等级考试相关信息请关注考试吧计算机等级考试网。

  点击查看:2015年计算机二级考试C++过关练习题及答案汇总

  1[简答题]定义内联函数实现求三个实数中的最大值。

  参考解析:

  解:内联函数只适用于功能简单,代码短小而又被重复使用的函数。函数体中包含复杂结构控制语句,如switch、复杂if嵌套、while语句等,以及无法内联展开的递归函数,都不能定义为内联函数,即使定义,系统也将作为一般函数处理。

  #include

  inline max(int a,int b,int c){

  if(a>b&&a>c) return a;

  if(b>a&&b>c) return b;

  if(c>a&&c>b) return c;

  }

  void main(){

  cout<

  }

  2[简答题]设计一个单向链表类模板,节点数据域中数据从小到大排列,并设计插入、删除节点的成员函数。

  参考解析:

  #include

  using namespace std;

  templateclass List;

  templateclass Node{

  T info; //数据域

  Node *link; //指针域

  public:

  Node(); //生成头结点的构造函数

  Node(const T & data);//生成一般结点的构造函数

  friend class List;

  };

  template Node::Node(){link=NULL;}

  template Node::Node(const T & data){

  info=data;

  link=NULL;

  }

  //定义链表类

  templateclass List{

  Node *head; //链表头指针和尾指针

  public:

  List(); //构造函数,生成头结点(空链表)

  ~List(); //析构函数

  void MakeEmpty(); //清空一个链表,只余表头结点

  Node* Find(T data); //搜索数据域与data相同的结点,返回该结点的地址

  void PrintList(); //打印链表的数据域

  void InsertOrder(Node *p); //按升序生成链表

  Node* CreatNode(T data); //创建一个结点(孤立结点)

  Node* DeleteNode(Node* p); //删除指定结点

  };

  templateList::List(){

  head=new Node(-9999);//头结点,最小的数据从小到大插入

  }

  templateList::~List(){

  MakeEmpty();

  delete head;

  }

  templatevoid List::MakeEmpty(){

  Node *tempP;

  while(head->link!=NULL){

  tempP=head->link;

  head->link=tempP->link; //把头结点后的第一个节点从链中脱离

  delete tempP; //删除(释放)脱离下来的结点

  }

  }

  template Node* List::Find(T data){

  Node *tempP=head->link;

  while(tempP!=NULL && tempP->info!=data) tempP=tempP->link;

  return tempP; //搜索成功返回该结点地址,不成功返回NULL

  }

  templatevoid List::PrintList(){

  Node* tempP=head->link;

  while(tempP!=NULL){

  cout

  tempP=tempP->link;

  }

  cout<

  }

  templatevoid List::InsertOrder(Node *p){

  Node *tempP=head,*tempQ=head; //tempQ指向tempP前面的一个节点

  while(tempP!=NULL){

  if(p->infoinfo)break; //找第一个比插入结点大的结点,由tempP指向

  tempQ=tempP;

  tempP=tempP->link;

  }

  p->link=tempP;

  tempQ->link=p;

  }

  templateNode* List::CreatNode(T data){//建立新节点

  Node*tempP=new Node(data);

  return tempP;

  }

  templateNode* List::DeleteNode(Node* p){

  Node* tempP=head->link,*tempQ=head,*tempC;

  while(tempP!=NULL && tempP!=p){

  tempQ=tempP;

  tempP=tempP->link;

  }

  tempC=tempP;

  tempQ->link=tempP->link;

  return tempC;

  }

  int main(){

  Node * P1;

  List list1;

  int a[10]={20,12,0,-5,9,-18,6,11,5,3},i,j;

  for(i=0;i<10;i++){

  P1=list1.CreatNode(a[i]);

  list1.InsertOrder(P1);

  }

  list1.PrintList();

  cout<<"请输入一个要求删除的整数"<

  cin>>j;

  P1=list1.Find(j);

  if(P1!=NULL){

  P1=list1.DeleteNode(P1);

  delete P1;

  list1.PrintList();

  }

  else cout<<"未找到"<

  cout<<"请输入一个要求插入的整数"<

  cin>>j;

  P1=list1.CreatNode(j);

  list1.InsertOrder(P1);

  list1.PrintList();

  list1.MakeEmpty();//清空list1

  list1.PrintList();

  return 0;

  }

  3[单选题] 下列关于虚函数与函数重载区别的叙述中不正确的是(  )。

  A.函数说明形式上不同

  B.函数允许非成员函数重载,虚函数只能是成员函数

  C.函数重载的调用依据参数和类型的差别,虚函数则依据对象

  D.函数重载的本体可以在类外定义,虚函数不可以

  参考答案:D

  参考解析:A项、B项、C项均为虚函数与函数重载的不同之处。但有一点它们是相同的:在类内外定义均可。故D项错误。

  4[单选题] 设有表示学生选课的3张表,学生S(学号、姓名、性别、年龄、身份证号)、课程C(课号、课名)、选课SC(学号、课号、成绩),则表SC的关键字(键或码)为(  )。

  A.课号、成绩B.学号、成绩C.学号、课号D.学号、姓名、成绩

  参考答案:C

  参考解析:关键字是指属性或属性的组合,其功能是唯一地标识一个元组或数据,而SC中学号和课号的组合可以对元组进行唯一的标识。

  5[单选题]

  

  参考答案:C

  6[单选题]执行下列语句后,输出结果为(  )。

  cout.put('s');

  cout<<'c'<<'a';

  A.ca

  B.sca

  C.s

  D.a

  参考答案:B

  7[单选题]在一棵二叉树的前序遍历、中序遍历、后序遍历所产生的序列中,所有叶结点的先后顺( )。

  A.都不相同

  B.完全相同

  C.前序和中序相同,而与后序不同

  D.中序和后序相同,而与前序不同

  参考答案:B

  参考解析:对二叉树的访问有3种方式,其中任意的两种可惟一确定一颗二叉树,但无论是前序、后序还是中序遍历二叉树时,其区别在于访问根的先后次序不同,而访问叶结点的顺序完全相同。

  8[单选题] 下列语句都是程序运行时的第一条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是(  )。

  A.cout<

  参考答案:D

  参考解析:setw(6)将输出宽度设为6,如果位数不够则在最左边补齐,因此该项输出一定不会与其他三项一致。

  9[简答题]

  请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程包含有一个源程序文件proj2.cpp,其中定义了Stack类和ArrayStack类。

  Stack是一个用于表示数据结构“栈”的类,栈中的元素是字符型数据。Stack为抽象类,它只定义了栈的用户接口,如下所示:

  公有成员函数 功能

  push 入栈:在栈顶位置添加一个元素

  pop 退栈:取出并返回栈顶元素

  ArrayStack是Stack的派生类,它实现了Stack定义的接口。ArrayStack内部使用动态分配的字符数组作为栈元素的存储空间。数据成员maxSize表示的是栈的最大容量,top用于记录栈顶的位置。成员函数push和pop分别实现具体的入栈和退栈操作。

  请在程序中的横线处填写适当的代码,然后删除横线,以实现上述功能。此程序的正确输出结果应为:

  a,b,C

  C,b,a

  注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****料found****”。

  //proj2.cpp

  #include

  using namespacc std;

  class Stack{

  public:

  virtual void push(char C)=0;

  virtual char pop()=0;

  };

  class ArrayStack:public Stack{

  char*P;

  int maxSizc;

  int top;

  public:

  ArravStack(int s)

  {

  top=0;

  maxSize=s:

  //*********found*********

  P=______;

  }

  ~ArrayStack()

  {

  //*********found*********

  _______;

  }

  void push(char c)

  }

  if(top==maxSize){

  cerr<<”Overflow! \n”:

  return;

  }

  //*********found*********

  _______;

  top++:

  }

  char pop()

  {

  if(top==0){

  cerr<<”Underflow!、n”;

  return‘\0’;

  }

  Top--;

  //*********found*********

  ______;

  }

  };

  void f(Stack&sRef)

  {

  char ch[]={‘a’,‘b’,‘c’};

  cout<

  sRef.push(oh[0]);sRef.push(ch[1]);sRef.push(ch[2]);

  cout<

  cout<

  cout<

  }

  int main()

  {

  ArrayStack as(10);

  f(as):

  return 0:

  }

  参考解析:

  (1)Ilew char[s]

  (2)delete[]P

  (3)P[top]=e

  (4)return P[top]

  【考点分析】

  本题主要考查的是表示栈的抽象类Stack类及它的派生类ArrayStaek类、纯虚函数和成员函数。栈的节点一般使用指针表示,定义构造函数时要给指针分配空间,使用New语句来完成。~ArrayStack()是析构函数,因为前面已经使用new来分配空间了,因此在这里要用delete语句来释放指针。

  【解题思路】

  (1)主要考查的是ArrayStack类的构造函数,在函数中要为P申请S个char型空间,应使用语句P=flew char[s];。

  (2)主要考查析构函数,使用delete语句释放指针,即delete[]P;。

  (3)主要考查push函数,top表示栈顶元素下标,添加的数据放到栈顶,因此使用语句P[top]=c;。

  (4)主要考查pop函数,输出栈顶数据,top表示栈顶元素下标,因此使用语句return P[top];。

  10[单选题]有以下函数

  fun(char *a,char *b)

  {

  while((*a!=’\0’) &&(*b!=’\0’)&&(*a==*b))

  { a++; b++;}

  return (*a-*b);

  }

  该函数的功能是( )

  A.计算a和b所指字符串的长度之差

  B.将b所指字符串复制到a所指字符串中

  C.将b所指字符串连接到a所指字符串后面

  D.比较a和b所指字符串的大小

  参考答案:D

  相关推荐:

  2015年9月计算机等级考试成绩查询时间通知

  2015年9月计算机等级考试真题及答案解析专题

  2015年计算机二级《C语言》最新章节练习题汇总

  2015年计算机二级《JAVA》章节习题及答案汇总

文章搜索
版权声明:如果计算机等级考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本计算机等级考试网内容,请注明出处。
Copyright © 2004- 考试吧计算机等级考试网 All Rights Reserved 
中国科学院研究生院权威支持(北京)
在线模拟试题
考证通关杀器
考试最新资讯
一次通关技巧