cc++面试题集锦.docx

上传人:b****0 文档编号:18515156 上传时间:2023-08-19 格式:DOCX 页数:13 大小:22.32KB
下载 相关 举报
cc++面试题集锦.docx_第1页
第1页 / 共13页
cc++面试题集锦.docx_第2页
第2页 / 共13页
cc++面试题集锦.docx_第3页
第3页 / 共13页
cc++面试题集锦.docx_第4页
第4页 / 共13页
cc++面试题集锦.docx_第5页
第5页 / 共13页
cc++面试题集锦.docx_第6页
第6页 / 共13页
cc++面试题集锦.docx_第7页
第7页 / 共13页
cc++面试题集锦.docx_第8页
第8页 / 共13页
cc++面试题集锦.docx_第9页
第9页 / 共13页
cc++面试题集锦.docx_第10页
第10页 / 共13页
cc++面试题集锦.docx_第11页
第11页 / 共13页
cc++面试题集锦.docx_第12页
第12页 / 共13页
cc++面试题集锦.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

cc++面试题集锦.docx

《cc++面试题集锦.docx》由会员分享,可在线阅读,更多相关《cc++面试题集锦.docx(13页珍藏版)》请在冰点文库上搜索。

cc++面试题集锦.docx

cc++面试题集锦

c/c++面试题集锦

1.多态类中的虚函数表是Compile-Time,还是Run-Time时建立的?

2.将一个1M-10M的文件,逆序存储到另一个文件,就是前一个文件的最后一个

字符存到新文件的第一个字符,以此类推。

3.main主函数执行完毕后,是否可能会再执行一段代码?

4.一个父类写了一个virtual函数,如果子类覆盖它的函数不加virtual,也能实现多态?

在子类的空间里,有没有父类的这个函数,或者父类的私有变量?

5.给一个字符串、例如“ababc”要求返回“ab”.因为“ab”连续重复出现且最长。

  用C/C++语言写一函数完成该算法,给出复杂度

6.对序列1、1、2、3、5、8、13。

  是Fab..数列

  2、3、5、13...是Fab..质数数列,因为他们与自己前面的Fab...数列都互质

给出k,返回第k小的Fab..质数

7.101个硬币100真、1假,真假区别在于重量。

请用无砝码天平称两次给出真币重还是假币重的结论。

8.完成字符串拷贝可以使用sprintf、strcpy及memcpy函数,请问这些函数有什么区别,你喜欢使用哪个,为什么?

9.变量的声明和定义有什么区别?

10.请写出下面代码在32位平台上的运行结果,并说明sizeof的性质:

#include

#include

intmain(void)

{

      chara[30];

      char*b=(char*)malloc(20*sizeof(char));

      printf("%d\n",sizeof(a));

      printf("%d\n",sizeof(b));

      printf("%d\n",sizeof(a[3]));

      printf("%d\n",sizeof(b+3));

      printf("%d\n",sizeof(*(b+4)));

      return0;

}

12.请完成以下题目。

注意,请勿直接调用ANSIC函数库中的函数实现。

  a)请编写一个C函数,该函数给出一个字节中被置1的位的个数,并请

    给出该题的至少一个不同解法。

  b)请编写一个C函数,该函数将给定的一个字符串转换成整数。

  c)请编写一个C函数,该函数将给定的一个整数转换成字符串。

  d)请编写一个C函数,该函数将一个字符串逆序。

  e)请编写一个C函数,该函数在给定的内存区域搜索给定的字符,并返回

    该字符所在位置索引值。

  f)请编写一个C函数,该函数在一个字符串中找到可能的最长的子字符串,

    该字符串是由同一字符组成的。

给出演示上述函数功能的一个简单程序,并请编写对应的Makefile文件

13.我们需要编写一个图形相关的应用程序,需要处理大量图形(Shape)信息,

图形有矩形(Rectangle),正方形(Square),圆形(Circle)等种类,应用

需要计算这些图形的面积,并且可能需要在某个设备上进行显示(使用在标准

输出上打印信息的方式做为示意)。

  a)请用面向对象的方法对以上应用进行设计,编写可能需要的类

  b)请给出实现以上应用功能的示例性代码,从某处获取图形信息,

    并且进行计算和绘制

  c)如果你的Square继承自Rectangle,请给出理由,如果不是,

    请给出理由,并且请比较两种方式的优劣

  d)请问你所编写的类,在如下代码中会有何表现,请解释

  voidtest_rectangle_area(Rectangle&r)

  {

      r.set_width(10);

      r.set_height(15);

      assert(r.area()==150);

  }

14.假设现有一个单向的链表,但是只知道只有一个指向该节点的指针p,并且假设这个节点不是尾节点,试编程实现删除此节点

15.写一个程序,把一个100以内的自然数分解因数。

(自然数分解因数就是将一个自然数分解为几个素数的乘积,提示,由于该数不是很大,所以可以将质数保存在数组中,以加快计算速度)

16.编写一个Identify的分配、释放的函数,为1-10000之间的自然数。

17.分别实现itoa和atoi.

18.Considerthefollowingcode:

#include

#include

intmain(intargc,char*argv[]){

inti=1;

charbuf[4];

strcpy(buf,"AAAA");

printf("%d\n",i);

return0;

}

a)Whencompiledandexecutedonx86,whydoesthisprogramusuallynot

outputwhattheprogrammerintended?

b)Nameseveralwaysinwhichthesecurityproblemthatcausesthis

programnottooutputwhattheprogrammerintendedcanbeprevented

WITHOUTchangingthecode.

19.intw=1,x=2,y=3,z=4;

m=(w

w:

x;

m=(m

m:

y;

m=(m<2)?

m:

z;

printf("m=%d",m);    说出结果

20.说出结果

#include

main()

{

  FILE*fp;

  inti,a[4]={1,2,3,4},b;

  fp=fopen("data.dat","wb");//这里帮忙解释一下

  for(i=0;i<4;i++)

  fwrite(&a[i],sizeof(int),1,fp);//这里也帮忙看一下

  fclose(fp);

  fp=fopen("data.dat","rb");

  fseek(fp,-2L*sizeof(int),SEEK_END);//还有这里

  fread(&b,sizeof(int),1,fp);//这里还有也看一下

  fclose(fp);

  printf("b=%d\n",b);

}

21.有双向循环链表结点:

typedefstructnode

{

  intdate;

  structnode*front,*next;

}_Node;

有两个双向循环链表A,B,知道其头指针为:

pHeadA,pHeadB,请写一函数将两上链表中date值相同的结点删除

22.

char*GetStr()

{

char*tmp;

tmp="123"

returntmp;

}

voidmain()

{

printf("%s",GetStr());

}

会输出123吗?

123创建在堆上还是栈上呢?

123的空间是什么时候释放的?

23.

字符指针、浮点数指针、以及函数指针这三种类型的变量哪个占用的内存最大?

为什么?

类ClassB从ClassA派生,那么ClassA*a=newClassB(…);试问该表达是否合法?

为什么?

如果ClassA中定义并实现虚函数intfunc(void),ClassB中也实现该函数,那么上述变量a->func()将调用哪个类里面的函数?

如果intfunc(void)不是虚函数,情况又如何?

为什么?

char**p,a[16][8];  问:

p=a是否会导致程序在以后出现问题?

为什么?

如下所述的ifelse和switch语句哪个的效率高?

为什么?

在同一个进程中,一个模块是否可以通过指针操作破坏其它模块的内存,为什么?

应用程序在运行时的内存包括代码区和数据区,其中数据区又包括哪些部分?

24.Assignment2:

PictureProcessing

UseC++,Java,orsimilarlanguagesor/andanymiddlewaresuchasEJBandJ2EEtoprocessa  picturewithahighresolution(3MegaPixelsforexample).Usesomemethodologiestodegrade  theresolutionofthepicturetomakeitquickerforbrowsing.Thendividethedegraded  pictureinto9sectorsequally.Clickanyofthe9sectorswillresultadetailedpicturefor  thissectorwiththesameresolutionasthatoftheoriginalpicture.Thisassignmentis  designedforyoutodemonstrateyourabilitytohandlepictures.

25.用<<,>>,|,&实现一个WORD(2个字节)的高低位交换!

!

26.要开辟P1,P2,P3,P4内存来做缓冲,大小自定,但这四个缓冲的大小要一样,并且是连续的!

27.有一浮点型数组A,用C语言写一函数实现对浮点数组A进行降序排序,并输出结果,要求要以数组A作为函数的入口.(建议用冒泡排序法)

28.找错:

#include

#include

classBase

{

private:

char*name;

public:

Base(char*className)

{

name=newchar[strlen(className)];

strcpy(name,className);

}

~Base()

{

deletename;

}

char*copyName()

{

charnewname[256];

strcpy(newname,name);

returnnewname;

}

char*getName()

{

returnname;

}

staticvoidprint(Basebase)

{

printf("name:

%s\n",base.name);

}

};

classSubclass:

publicBase

{

public:

Subclass(char*className):

Base(className)

{

}

};

intmain()

{

Base*pBase=newSubclass("test");

Base:

:

print(*pBase);

printf("name:

%s\n",pBase->getName());

printf("newname:

%s\n",pBase->copyName());

return0;

}

29.编写一个函数,函数接收一个字符串,是由十六进制数组成的一组字符串,函数的功能是把接到的这组字符串转换成十进制数字.并将十进制数字返回.

30.编写一个函数将一条字符串分成两部分,将前半部分按ASCII码升序排序,后半部分不变,(如果字符串是奇数则中间的字符不变,)最后再将前后两部分交换,然后将该字符串输出,

测试字符串“ADZDDJKJFIEJHGI”

31.找错

Voidtest1()

{

  charstring[10];

  char*str1="0123456789";

strcpy(string,str1);

}

Voidtest2()

{

  charstring[10],str1[10];

for(I=0;I<10;I++)

{

      str1[i]='a';

}

strcpy(string,str1);

}

Voidtest3(char*str1)

{

  charstring[10];

  if(strlen(str1)<=10)

{

  strcpy(string,str1);

}

}

32.  找错

#defineMAX_SRM256

DSNget_SRM_no()

{

      staticintSRM_no;

      intI;

      for(I=0;I{

SRM_no%=MAX_SRM;

if(MY_SRM.state==IDLE)

{

  break;

}

}

if(I>=MAX_SRM)

return(NULL_SRM);

else

returnSRM_no;

}

33.  写出程序运行结果

intsum(inta)

{

      autointc=0;

      staticintb=3;

c+=1;

b+=2;

return(a+b+C);

}

  

voidmain()

{

      intI;

inta=2;

for(I=0;I<5;I++)

{

  printf("%d,",sum(a));

}

}

34.  

intfunc(inta)

{

  intb;

  switch(a)

  {

      case1:

30;

      case2:

20;

      case3:

16;

      default:

0

}

returnb;

}

则func

(1)=?

35:

inta[3];

a[0]=0;a[1]=1;a[2]=2;

int*p,*q;

p=a;

q=&a[2];

则a[q-p]=?

36.

定义int**a[3][4],则变量占有的内存空间为:

_____

37.

编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。

如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。

38.写一个函数,判断一个int型的整数是否是2的幂,即是否可以表示成2^X的形式(不可以用循环)

我只知道是用递推,大概写了一下,如下:

intIsTwoPow(ints)

{

  if(s==1)returnFALSE;

  s=s>>1;

  if(s>1)IsTwoPow(s);

  return(s==1)?

TRUE:

FALSE;//大概是这个意思,但是这一句似乎不该这么返回!

}

39A,B从一堆玻璃球(共100个)里向外拿球,规则如下:

  

(1)A先拿,然后一人一次交替着拿;

(2)每次只能拿1个或2个或4个;

(3)谁拿最后一个球,谁就是最后的失败者;

  问A,B谁将是失败者?

写出你的判断步骤。

40.已知:

无序数组,折半查找,各元素值唯一。

函数原型是:

Binary_Seach(intarray[],intiValue,intiCount)

array是数组,在里面用折半查找的方法找等于iValue的值,找到返回1否则0,iCount是元素个数

41.统计一个字符串中字符出现的次数

42.100位以上的超大整数的加法(主要考虑数据结构和加法的实现)。

43.对如下电文:

"CASTCASTSATATATASA"给出Huffman编码。

44.int(*(*f)(int,int))(int)表示什么含义?

45.x=x+1,x+=1,x++,为这三个语句的效率排序。

并说明为什么。

46.中缀表达式A-(B+C/D)*E的后缀形式是什么?

47.structS1

{

charc;

inti;

};

sizeof(S1)=?

classX{

public:

X();

virtual~X();

voidmyMemberFunc();

staticvoidmyStaticFunc();

virtualvoidmyVirtualFunc();

private:

inti;

char*pstr;

chara;

}

sizeof(X)=?

48.找出两个字符串中最大子字符串,如"abractyeyt","dgdsaeactyey"的最大子串为"actyet"

49.有一百个整数,其中有负数,找出连续三个数之和最大的部分.

50.写一程序实现快速排序.假设数据输入为一文件

快速算法描述如下

AlgorithmPartition

Input:

sequencea0,...,an-1withnelements

Output:

permutationofthesequencesuchthatallelementsa0,...,ajarelessthanorequaltoall

elementsai,...,an-1(i>j)

Method:

choosetheelementinthemiddleofthesequenceascomparisonelementx

leti=0andj=n-1

whileij

  searchthefirstelementaiwhichisgreaterthanorequaltox

  searchthelastelementajwhichislessthanorequaltox

  ifij

  exchangeaiandaj

  leti=i+1andj=j-1

Afterpartitioningthesequence,Quicksorttreatsthetwopartsrecursivelybythesameprocedure.

Therecursionendswheneverapartconsistsofoneelementonly.

51.写一算法检测单向链表中是否存在环(whetherthereisaloopinalinklist),

要求算法复杂度(Algorithm'scomplexity是O(n))并只使用常数空间(spaceisO(c)).

注意,你只知道一个指向单向链表头的指针。

链表的长度是不定的,而且环出现的地方也是不定的,环有可能在头,有可能在中间。

而且要求是检测,不能破坏环的结构.

52.设下列函数已经通过了调试

boolSort_Array(ArrayType*Pinputarray,ArrayType*Poutarray);

该函数在内存中排序,能把字节数最大为100M字节的ArrayType类型的数组排序。

其中ArrayType是一个

预定义的数组类型(细节无关紧要),Pinputarray,Poutarray分别为排序前的指针和排序后的指针。

请用c语言的伪码风格设计一个算法,他调用上面给出的函数完成下列从输入到输出的任务:

输入:

排序前的大文件,名称为char*pinoutfilename,其内容为用分号分隔的ArrayType类型的数组元素,可装满4个100M字节的数组。

输出:

排序后的大文件char*poutoutfilename。

53.用最有效率的方法算出2乘以8等於几?

54.

1.错误的转义字符是(c)

A.'\091'B.'\\'

C.'\0'D.'\''

2.若数组名作实参而指针变量作形参,函数调用实参传给形参的是(d)

A.数组的长度B.数组第一个元素的值

C.数组所有元素的值D.数组第一个元素的地址

3.变量的指针含意是指变量的(b)

A.值B.地址

C.存储D.名字

5.某文件中定义的静态全局变量(或称静态外部变量)其作用域是(d)

A.只限某个函数B.本文件

C.跨文件D.不限制作用域

55.

1.解二次方程:

a*x*x+b*x+c

intQuadratic(doublea,doubleb,doublec,double&x1,double&x2);

返回值:

解的个数

2.最大公约数

DWORDDivisor(DWORDdwFirst,DWORDdwSecond);

返回值:

最大公约数

3.根据蒙特卡洛算法计算圆周率

doublePI(DOWRDdwCount/*测试次数*/);

返回值:

PI

4.无符号整数乘法,乘数为32bit,结果为64bit

提示:

32bit整数分解为16bit相乘

voidMultiply(DWORDdwFirst,DWORDdwSecond,DWORD&dwHigh,DWORD&dwLower);

5.链表排序(从小到大)

节点定义为:

structNode{

  intnValue;

  structNode*pNext;

};

最后一个节点的pNext=NULL.

Node*SortChain(Node*pHead);

返回值:

链表头

Trackback:

 

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

当前位置:首页 > 医药卫生 > 基础医学

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

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