联想笔试题及解答

时间:2021-02-10 14:56:57 综合指导 我要投稿

联想笔试题及解答

联想笔试题
1.设计函数

int atoi(char *s)。int atoi(char *s)
{
  char sign; 
  char sign_val = 1;
  int val = 0;
  int n = 0;


  /* skip spaces */
  while (isspace(*s))
    ++s;
  if (*s == '-' || *s == '+')
    /* skip '-' and '+' sign */
  {
    sign = *s;
    if (sign == '-')
      sign_val = -1;
    ++s;
  }


  /* when goes here, it is not space or sign */
  while ((*s != '\0') && isdigit(*s))
  {
    val = 10 * n + (*s - '0'); 
    n = val;
    s++;
  }
  if (*s != '\0')
  {
    printf("non digit in your input!!\n"); 
    exit(-1); 
  } 
  /* non error occured */ 
  return (sign_val * val); 
} 


2.int i=(j=4,k=8,l=16,m=32); printf("%d", i); 输出是多少?

结果为: 32.

3.解释局部变量、全局变量和静态变量的含义。

  局部变量包括函数的形参,包含在函数体或者语句块内的变量,局部变量的生存期在退出函数或语句块后结束。

  全局变量是指在所有函数和语句块之外的变量,它对于整个程序均可见,全局变量的生存期与程序的生存期相同.

  静态变量指由关键字static声明的变量,它的作用域和其他变量一样,由它所在的位置决定,如在函数体或语句块中声明,则只在函数体或语句块可见,其他地方均不可见.它的生存期与程序相同.

4.解释堆和栈的区别。简述如下:

  栈上分配的内存,由系统自动分配,系统会自动收回.如果需要动态分配内存,则只能通过malloc/new在堆上分配的内存,使用完毕后,通过free/delete来释放内存。

5.论述含参数的宏与函数的优缺点。

含参数的宏优点:省去了函数调用的开销,运行效率高.
含参数的缺点:

由于宏本质上是字符串的替换,所有可能会由于一些参数的.副作用导致得出错误的结果.

如:

  #define max(a, b) ( ((a) > (b)) ? (a) : (b) )
如果程序中出现这样的调用: max(a++, b);
将导致a被计算2次,从而可能得到错误的结果,而函数调用不会出现这种问题.另外,如果程序中有多次宏替换的话,可能导致代码体积变大.函数的优点是:
没有带参数宏可能导致的副作用,计算的正确性较宏更有保证.
函数调用的缺点:
函数调用需要一些参数,返回地址等入栈,出栈的开销,效率没有宏函数高

【联想笔试题及解答】相关文章:

应届面试常见问题及解答04-01

英语面试常见问题及解答技巧03-20

面试中最常见的问题及解答04-18

招聘面试的笔试试卷及解答03-12

教师面试中常见问题及解答12-10

常见的Java多线程面试问题及解答07-05

2017银行试题及答案02-21

2017华为笔试题及答案03-11

2017安全培训试题及答案02-16

英语教师面试题及答案03-20