网康笔试

来源:互联网 发布:春风已经苏醒 知乎 编辑:程序博客网 时间:2024/04/29 12:46

一、简答

1.不用中间变量交换两个变量a、b的值。

void exchang(void *a , void *b)

{

    *a = *a + *b;

    *b = *a - *b;

    *a = *a - *b;

    //or *b = (*a+*b)-(*a = *b )

}//这种方法在计算*a+*b时有溢出的危险

Or

void exchang(void *a , void *b)

{

    *a = *a^*b;

    *b = *a^*b;

    *a = *a^*b;

}

2.static全局变量和普通全局变量什么区别?static局部变量和普通局部变量什么区别?static函数和普通函数什么区别?

//C语言中,从作用域和作用时间(由存储区域决定)考虑

static全局变量作用域为定义该变量的文件,普通全局变量为整个工程,只要在使用它的其他文件中做出声明:externtype var。

             作用时间相同,都是整个工程的运行阶段。-都存于静态变量区

static局部变量作用域为定义该变量的函数,普通局部变量与之相同。

             作用时间为整个工程,并不会随该函数的结束而释放。-存储于静态变量区

             普通局部变量定义该变量的函数结束后被释放。-存储于栈中

static函数和普通函数的区别在于static函数不能被除了定义它的文件以外的文件访问,因此可以出现重名。

详细参考:http://blog.sina.com.cn/s/blog_604afbb00100rrlr.html

3.删除一个双向量链表节点。

二、算法

1.写一个atoi函数

int atoi( const char *str)
{
     assert( NULL != str);
     int num = 0;
     int SIGNAL = 1;
     if( *str == '+' )
     {
          ++str;
     }
     else if( *str == '-')
     {
          ++str;
          SIGNAL = -1;
     }
     while(*str<='9' && *str>='0')
     {
          num = num*10 + (num-'0');
     }
     return SIGNAL*num;
}

2.写一个二叉树广度优先的遍历算法

3.对一个有序的集合,写一个二分法查找的算法,分别用递归和非递归实现。

原创粉丝点击