TCL集团2013校园招聘C/C++方向笔试题

来源:互联网 发布:淘宝互刷流量有用吗 编辑:程序博客网 时间:2024/04/29 06:36

  TCL集团2013年校园招聘笔试题[C/C++方向]

  提示:本测试题总分100分,请60分钟内完成测试。

  一、判断题(正确的打√,错误的打×,每题1分,合计1x10=10分)

  1. C语言中,016218表示为一个八进制整数。()

  2. switch(c)语句中,c可以是int, long, unsigned char, char, unsigned int类型。()

  3. 有数组定义int a1[2][2]={{1,2},{2}};则a1[1][1]的值为不确定的。()

  4. 有#define MYPRINT(x) printf("#x") 则MYPRINT(test)的输出结果为test.()

  5. a=(b=4)+(c=6)是一个合法的赋值表达式。()

  6. 自增运算符(++)和自减运算符(--)只能用于变量,不能用于常量和表达式。()

  7. 若有说明static int a[3][4];则数组a中各元素可在程序的编译阶段得到初值0。()

  8. char const * const p;与const char * const p;是一样,但是char * const p;与char const *p;是不一样的。()

  9. C++中const成员函数对于任何本类的数据成员都不能进行写操作。()

  10. C++中所有的函数都是纯虚函数的才是纯虚类。()

  二、填空题(20分)

  注:以下填空题目都是以32位机为主

  1. 给定结构

  #pragma pack(4)

  struct A{

  int a1:30;

  char a2:2;

  int a3:16;

  int a4:16;

  char a5;

  int a6:3;

  };

  union B{

  int b1:16;

  char b2:2;

  };

  则

  sizeof(A)= _____________

  sizeof(B)= _____________

  (5分)

  2、 下面代码实现统计一个整数二进制格式中包含多少个'1'请补充完整(5分)

  int GetBitNumber(int number)

  {

  int cnt=0;

  while(number!=0)

  {

  __________________________;

  __________________________;

  }

  return cnt;

  }

  3、 有如下定义

  char *a1[]={"hello!","tclmob"};

  char a2[]="\thello\0";

  char a3[][8]={"hello!","tclmob"};

  char *p1="hello";

  char **p2=a1;

  char a4[]={'h','e','l','l','o','\0'};

  int a5[]={'h','e','l','l','o','\0'};

  请问

  sizeof(a1)= _____________

  sizeof(a2)= _____________

  strlen(a2)= _____________

  sizeof(a3)= _____________

  sizeof(p1)= _____________

  sizeof(p2)= _____________

  sizeof(a4)= _____________

  sizeof(a5)= _____________

  (4分)

  4、 在一棵二叉树上第8层的结点数最多是____个。(2分)

  5、 进程之间通信的途径有____._____._____._____.(4分)

  三、单/多项选择题(每题2分,合计2*15=30分)

  1、 对于浮点变量f,能实现对f中的值在小数点后第三位进行四舍五入的表达式有_____

  A)f=(f*100+0.5)/100.0 B)f=(f*100+0.5)/100

  C)f=(int)(f*100+0.5)/100.0 D)f=((int)(f*100+0.5))/100.0

  2、 若x、b、m、n均为int型变量,执行下面语句后b的值为_____

  m=20;n=6;

  x=(--m==n++)?--m:++n

  b=m++;

  A)11 B)6 C)19 D)18

  3、 下列选项中可以将变量n清零的表达式有____

  A)n=~n&~n B)n=n&~n C)n=n^n D)n=n|n

  4、 若有以下说明int a[5][9]; 则下列选项中对数组元素a[i][j]的正确引用有________(0<=i<4,0<=j<0)

  A)*(&a[0][0]+9*i+j) B)*(a+i)(j)

  C)*(*(a+i)+j) D)*(a[i]+j)

  5、 下列选项中没有构成死循环的程序段有______

  A)int i=100;                           B)for( ; ; )

  while(1)

  { i=i%100+1;

  if(i>=100) break;}

  C)int k=0;                            D)int s=36; while(s);--s;

  do{++k;}while(k>=0);

  6、 有如下程序:

  void fun(int i)

  {

  printf("%d,",i);

  }

  void main()

  {

  int i=5;

  fun(i);

  fun;

  }

  则运行结果是_____

  A)5,0, B)5, C)5,5, D)5,随机值 E)可能出现运行异常

  7、 若变量已正确定义,要求程序段完成求5!的计算,下列选项中能完成此操作的程序段

  A)for (i=1,p=1;i<=5;i++) p*=i;

  B)for (i=1;i<=5;i++) {p=1;p*=i;}

  C)i=1;p=1;while(i<=5) p*=i;i++;

  D)i=1;p=1;do{p*=i;i++;}while(i<=5);

  8、 有如下代码:

  int a,b,c;a=b=c=0;

  0>1?a++:1>0?b++:c++;

  printf("%d%d%d\n",a,b,c);

  则输出结果是_________

  A)010 B)110 C)111 D)语法错误

  9、 OSI模型中,会话层的主要任务有______

  A)向用户提供可靠的端到端服务,透明地传送报文

  B)组织两个会话进程之间的通信,并管理数据的交换

  C)处理两个通信系统中交换信息的表示方式

  D)确定进程之间通信的性质,以满足用户的需要

  10、有以下程序

  main()

  {

  int x=102,y=012;

  printf("%2d,%2d\n",x^y,x|y);

  }

  执行后输出结果是是()

  A)4,110 B)002,112 D)108,110 D)106,110

  11、设有如下的程序段:

  char str[]="Hello";

  char *ptr;

  ptr=str;

  执行上面的程序段后,*(ptr+5)的值为______

  A)'o' B)'\0' C)不确定的值 D)'o'的地址

  12、一个栈的输入序列为1 2 3,则可能是栈的输出序列的是_____

  A)231 B)321 C)312 D)123

  13、下面关于完全二叉树的叙述中,正确的有______

  A)除了最后一层外,每一层上的结点数均达到最大值。

  B)可缺少若干个左右叶子结点

  C)完全二叉树一般不是满二叉树

  D)具有结点的完全二叉树的深度为[log2n]+1

  14、下面概念中,属于面向对象方法的有___________

  A)对象、消息 B)继承、多态 C)类、封装 D)过程调用

  15、在下列几种排序方法中,要求内存量最大的是__________.

  A)插入排序 B)选择排序 C)快速排序 D)归并排序

  四、简答题(每题5分,合计5x4=20分)

  1、 写出程序执行结果,并解释原因(5分)

  void getstr(char *p)

  {

  p=(char *)malloc(100);

  strcpy(p,"TCL");

  }

  void main()

  {

  char *str;

  getstr(str);

  if(str)

  {

  str[3]='0';

  printf("%s,%d\n",strlen(str));

  free(str);

  }

  }

  2、 写一个“标准”宏,这个宏返回一个数组最高维的下标(如数组a[2][4][6],执行宏之后结果是2)。(5分)

  3、 比较说明什么是Big-Endian,Little-Endian,网络字节序。(5分)

  4、 下面程序

  main()

  {

  char *p1="abc", *p2="ABC", str[8]="xyz";

  strcpy(str+2,strcat(p1,p2));

  printf("%s \n",str);

  }

  运行结果是什么?为什么?(5分)

  五、编程题(20分)

  有两个单向链表,函数find_node作用是判断两个链表是否有交点(两个链表有相同的节点),如果有返回第一个交点。请编程实现。

  type struct tag_node

  {

  int key;

  struct tag_node *next;

  }node;

  函数原型:

  node* find_node(node *head1,node *head2)

  入参说明:

  head1,head2:待检查的两个链表

  返回:

  相交的节点

0 0