C++笔试题目及答案.docx

上传人:b****1 文档编号:13315631 上传时间:2023-06-13 格式:DOCX 页数:12 大小:17.58KB
下载 相关 举报
C++笔试题目及答案.docx_第1页
第1页 / 共12页
C++笔试题目及答案.docx_第2页
第2页 / 共12页
C++笔试题目及答案.docx_第3页
第3页 / 共12页
C++笔试题目及答案.docx_第4页
第4页 / 共12页
C++笔试题目及答案.docx_第5页
第5页 / 共12页
C++笔试题目及答案.docx_第6页
第6页 / 共12页
C++笔试题目及答案.docx_第7页
第7页 / 共12页
C++笔试题目及答案.docx_第8页
第8页 / 共12页
C++笔试题目及答案.docx_第9页
第9页 / 共12页
C++笔试题目及答案.docx_第10页
第10页 / 共12页
C++笔试题目及答案.docx_第11页
第11页 / 共12页
C++笔试题目及答案.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++笔试题目及答案.docx

《C++笔试题目及答案.docx》由会员分享,可在线阅读,更多相关《C++笔试题目及答案.docx(12页珍藏版)》请在冰点文库上搜索。

C++笔试题目及答案.docx

C++笔试题目及答案

C++笔试题目及答案

  

  C++笔试题目及答案篇1

  

  1.What’soverloadfunctioninC++?

  

  “重载”是指编写一个与已有函数同名但参数表不同的函数。

构成重载的条件是:

在相同的范围内(比如说在同一个类中),函数名字相同,但函数参数不同(要么参数类型不同,要么参数个数不同,要么两者都不同)

  

  2.A.What’sinlinefunctioninC++?

  

  内联函数是指嵌入代码,就是在调用函数的地方不是跳转,而是直接把代码写到那里去。

它与普通函数相比能提高效率,因为它不需要中断调用,在编译的时候内联函数可以直接把代码镶嵌到目标代码中去,省去了函数调用的开销,但是它是以代码膨胀为代码的(以增加空间消耗为代价)

  

  B.Whenwouldyouuseinlinefunction?

  

  

(1)一个函数不断的被重复调用

  

  

(2)函数只有简单的几行,且函数内部包含:

for,while,switch语句。

  

  C.Pleasewritesamplecode.

  

  voidFoo(intx,inty);

  

  inlinevoidFoo(intx,inty){...}

  

  需要注意的是:

关键字inline必须与函数定义体放在一起才能使函数构成内联,仅将inline放在函数声明前不起任何作用。

  

  3.Whichofthefollowingarelegal?

Forthoseusagesthatareillegal,explainwhy.

  

  constintbuf;

  

  不合法。

因为定义const变量(常量)时必须进行初始化,而buf没有初始化。

  

  intcnt=0;

  

  constintsz=cnt;

  

  合法。

  

  cnt++;sz++;

  

  不合法。

因为修改了const变量sz的值。

  

  4.PleasepointouttheerrorsinthefollowingC++code.Andwhy?

  

  switch(ival)

  

  {

  

  case1,3,5,7,9:

oddcnt++;

  

  break;

  

  case2,4,6,8,10:

evencnt++;

  

  break;

  

  }

  

  貌似case不能把所有的情况并列列出来,没见过case1,3,5,7,9:

这种写法,改为case1:

oddcnt++;case3:

oddcnt++;

  

  C++笔试题目及答案篇2

  

  1.Giventhefollowingbaseandderivedclassdefinitions:

  

  classBase

  

  {

  

  public:

  

  foo(int);

  

  protected:

  

  int_bar;

  

  double_foo_bar;

  

  };

  

  classDerived:

publicBase

  

  {

  

  public:

  

  foo(string);

  

  boolbar(Base*pb);

  

  voidfoobar();

  

  protected:

  

  string_bar;

  

  };

  

  Identifywhatiswrongwitheachofthefollowingcodefragmentsandhoweachmightbefixed:

  

  (a)Derivedd;d.foo(1024);

  

  错误:

定义个派生类的对象d,d.foo(1024);派生类中foo的参数是string,不能将int型转换为"string"

  

  (b)voidDerived:

:

foobar(){_bar=1024;}

  

  正确:

定义派生类的成员函数foobar();把整形1024赋给string,发生类型转换

  

  (c)boolDerived:

:

bar{Base*pb}

  

  {return_foo_bar==pb->_foo_bar;}

  

  错误:

没有参数列表,还有下面不应该为"==",还有在派生类中无法访问基类的保护成员。

  

  应该改为:

boolDerived:

:

bar(Base*pb)

  

  {return_foo_bar=pb->_foo_bar;}

  

  2.A.Pleaselistallthedesignpatternsyouknown.

  

  常见的设计模式有23种,比如说:

单例模式、工厂模式,观察者模式、组合模式、策略模式、适配器模式、命令模式等等

  

  B.Pleaseexplainthepatternof“Factory”andgiveanexampleifyoucan.

  

  工厂模式使一个类的实例化延迟到子类,换句话说也就是将创建对象实例的责任,

  

  转移到工厂类中,并利用抽象的原理,将实例化行为延迟到具体工厂类。

  

  3.A.Pleaselistallthesortingalgorithmsyouknown.

  

  排序算法:

冒泡排序(最简单了,就是2个for循环)、快速排序、选择排序、插入排序、归并排序、希尔排序、堆排序等等

  

  B.Pleaseusepseudocodetodescribethealgorithmof“QuickSort”.

  

  快速排序采用的是分治策略,分治法的基本思想是:

将原问题分解为若干个规模更小但结构与原问题相似的子问题,递归解决这些子问题,然后将这些子问题的解组合为原问题的解。

  

  快速排序:

快速排序是对冒泡排序的一种改进,时间复杂度均是O(nlogn)空间复杂度是:

O(logn)

  

  基本思想:

通过一趟排序算法将待排记录分割成2部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录进行排序以达到整个序列有序。

  

  一趟快速排序做法:

  

  附设两个指针low和high,设枢轴记录关键字为pivotkey,则先从高位(high)起向前搜索找到第一个关键字小于pivotkey的记录和枢轴记录进行交换,然后从低位(low)所指位置向后搜索,找到第一个关键字大于pivotkey的记录和枢轴记录进行交换,重复这两步,直至low=high为止。

  

  源代码:

  

  voidquicksort(inta[],intlow,inthigh)

  

  {

  

  inti,j,key,temp;

  

  if(low

  

  {

  

  key=a[low];

  

  i=low;

  

  j=high;

  

  while(i

  

  {

  

  for(i=i+1;i

  

  if(a[i]>key)

  

  break;

  

  for(j=j;j>low;j--)

  

  if(a[j]

  

  break;

  

  if(i

  

  {temp=a[i];

  

  a[i]=a[j];

  

  a[j]=temp;

  

  }

  

  }

  

  temp=a[low];

  

  a[low]=a[j];

  

  a[j]=temp;

  

  quicksort(a,low,j-1);

  

  quicksort(a,i,high);

  

  }

  

  }

  

  测试:

int_tmain(intargc,_TCHAR*argv[])

  

  {

  

  inta[]={49,38,65,97,76,13,27,49};

  

  intsize=sizeof(a)/sizeof(int);

  

  quicksort(a,0,size-1);

  

  for(inti=0;i

  

  {

  

  cout<

  

  cout<

  

  }

  

  system("pause");

  

  return0;

  

  }

  

  C++笔试题目及答案篇3

  

  Pleaseanswerthefollowingquestions:

  

  A.What’sprocessschedulingandlistallschedulingalgorithmsyouknown.

  

  调度算法是指:

根据系统的资源分配策略所规定的资源分配算法。

  

  1.先来先服务和短作业(进程)优先调度算法

  

  2.高优先权优先调度算法

  

  3.基于时间片的轮转调度算法

  

  B.What’sthe“RaceCondition”?

  

  竞态条件(racecondition)是一个在设备或者系统试图同时执行两个操作的时候

  

  出现的不希望的状况,但是由于设备和系统的自然特性,为了正确地执行,操作必

  

  须按照合适顺序进行。

 常用在多线程环境中。

  

  C.Pleaseexplainthediagramofprocessstatechange.

  

  进程有3种基本状态,等待、就绪、运行。

  

  运行态→等待态:

往往是由于等待外设,等待主存等资源分配或等待人工干预而引

  

  起的。

(服务请求,如请求I/O等)

  

  等待态→就绪态:

等待的条件已满足,只需分配到处理器后就能运行。

(服务完

  

  成/事件来到)

  

  运行态→就绪态:

不是由于自身原因,而是由外界原因使运行状态的进程让出处理

  

  器,这时候就变成就绪态。

例如时间片用完,或有更高优先级的进程来抢占处理器

  

  等。

(时间片到等)

  

  就绪态→运行态:

系统按某种策略选中就绪队列中的一个进程占用处理器,此时就

  

  变成了运行态(进程调度)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2