软通动力C语言笔试题和面试题答案目(2)

招聘笔试题2018-11-22才子老师

  11、写出下列代码的输出内容

  #include

  int inc(int a)

  {

  return(++a);

  }

  int multi(int*a,int*b,int*c)

  {

  return(*c=*a**b);

  }

  typedef int(FUNC1)(int in);

  typedef int(FUNC2) (int*,int*,int*);

  void show(FUNC2 fun,int arg1, int*arg2)

  {

  INCp= &inc;

  int temp =p(arg1);

  fun( &temp,&arg1, arg2);

  printf( "%d ",*arg2);

  }

  main()

  {

  int a;

  show(multi,10, &a);

  return 0;

  }

  答:110

  11、请找出下面代码中的所以错误

  说明:以下代码是把一个字符串倒序,如abcd倒序后变为dcba

  1、#include "string.h "

  2、main()

  3、{

  4、 char*src= "hello,world ";

  5、 char* dest=NULL;

  6、 int len=strlen(src);

  7、 dest=(char*)malloc(len);

  8、 char* d=dest;

  9、 char* s=src[len];

  10、 while(len--!=0)

  11、 d++=s--;

  12、 printf( "%s ",dest);

  13、 return 0;

  14、}

  答:

  方法1:

  int main()

  {

  char* src = "hello,world ";

  int len = strlen(src);

  char* dest = (char*)malloc(len+1);//要为分配一个空间

  char* d = dest;

  char* s = &src[len-1];//指向最后一个字符

  while( len-- != 0 )

  *d++=*s--;

  *d = 0;//尾部要加

  printf( "%s ",dest);

  free(dest);// 使用完,应当释放空间,以免造成内存汇泄露

  return 0;

  }

  方法2:

  #include

  #include

  main()

  {

  char str[]= "hello,world ";

  int len=strlen(str);

  char t;

  for(int i=0; i     {

  t=str[i];

  str[i]=str[len-i-1]; str[len-i-1]=t;

  }

  printf( "%s ",str);

  return 0;

  }

  12。对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?

  答案:c用宏定义,c++用inline

  13。软件测试都有那些种类?

  答案:黑盒:针对系统功能的测试 白合:测试函数功能,各函数接口

  14。确定模块的功能和模块的接口是在软件设计的那个队段完成的?

  答案:概要设计阶段

  15。enum string

  {

  x1,

  x2,

  x3=10,

  x4,

  x5,

  }x;

  问x;

  答案:取值在0。1。10。11。12中的一个

  16。unsigned char *p1;

  unsigned long *p2;

  p1=(unsigned char *)0x801000;

  p2=(unsigned long *)0x810000;

  请问p1+5= ;

  p2+5= ;

  答案:801005; 810014。不要忘记了这个是16进制的数字,p2要加20变为16进制就是14

  选择题:

  1.Ethternet链接到Internet用到以下那个协议?

  A.HDLC;B.ARP;C.UDP;D.TCP;E.ID

  2.属于网络层协议的是:

  A.TCP;B.IP;C.ICMP;D.X.25

  3.Windows消息调度机制是:

  A.指令队列;B.指令堆栈;C.消息队列;D.消息堆栈;

  答案:b,a,c

  二找错题:

  1.请问下面程序有什么错误?

  int a[60][250][1000],i,j,k;

  for(k=0;k<=1000;k++)

  for(j=0;j<250;j++)

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

  a[i][j][k]=0;

  答案:把循环语句内外换一下

  2。以下是求一个数的平方的程序,请找出错误:

  #define SQUARE(a) ((a)*(a))

  int a=5;

  int b;

  b=SQUARE(a++);

  答案:这个没有问题,s(a++),就是((a++)×(a++))唯一要注意的就是计算后a=7了

相关推荐

猜你喜欢

大家正在看

换一换