C语言面试题

来源:互联网 发布:数控5轴编程招聘 编辑:程序博客网 时间:2024/06/05 13:21
基础篇
1、局部变量能否和全局变量重名?
 可以

2、如何引用一个已经定义过的全局变量?
 直接调用并初始化

3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?
 可以,

4、static const  volatile register 关键词的作用  
 static:定义变量时是静态变量,限制变量的使用范围,只需要初始化一次。修饰函数时是限制函数的使用范围
 const:
5、程序的局部变量存在于(堆栈)中,全局变量存在于(bss/data)中,动态申请数据存在于(堆)中。

6、堆和栈有什么区别?

7、什么是预编译,何时需要预编译:

8、c和c++中的struct有什么不同?

9、memset ,memcpy 和strcpy 的根本区别?
 
10、assert()是干什么用的

11、分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var)

12.如果内存中有这样两个数:1000 0000 0000 0000 和 1111 1111 1111 1111,那么他们对应的10进制数字分别是多少?

大小端:
有无符号:
进制:
 
13.用最有效率的方法算出2乘以8等于几
  n << 3 + n
14.x=x+1, x+=1, x++, ++x  哪个效率最高?为什么?

15.如果有“int a=5, b=3”,则在执行“!a&&b++”后,a和b的值分别是多少?

  
################################
二、看代码写运行结果
1.#请写出下列代码的输出内容   
#include  <stdio.h>  
int main(void)   
{    
   int a,b,c,d;
  a= 10;  
  b= a++;
  c= ++a;  
   d= 10 * a++ + ++a;  
  printf("a, b,c,d:%d %d,%d,%d\n",a ,b,c,d);  
  return 0;  
 }   

2.设有以下说明和定义:  
typedef union
{
 long i;
 int k;
  char c[6];
} DATE;
 struct data
 {
   int cat;
   DATE cow;
   double dog;
} too;
   DATE max;   
printf("%d",sizeof(struct data)+sizeof(max));的执行结果是:_______

3.某32位系统下, C程序,请计算sizeof 的值。
 char str[10] = “hello.c/”;
 char (*p)[10] = str ;
 int n = 10;
   请计算
  sizeof (str ) = ?
  strlen(str) ?
  sizeof ("abcdef") = ?
  sizeof ("abcdef" + 1) = ?
  sizeof ( p ) = ?
  sizeof ( n ) = ?
  void Foo ( char str[100]){
   sizeof( str ) = ?
  }
  void *p = malloc( 100 );
  sizeof ( p ) = ?;
4.下面的代码输出是什么,为什么?
void foo(void)
{
 unsigned int a = 6;
 signed int b = -20;
 (a+b > 6) ? printf("> 6") : printf("<= 6");
}

三、编码题
1.模仿字符处理函数库,写出strcpy函数
s
2.写一个函数返回1+2+3+…+n的值?

3.编写下列宏:
 1)写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。

 2)用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)

 3)用宏定义写出swap(x,y)
 
 4)一语句实现x是否为2的若干次幂的判断
 
4.写一个递归函数实现斐波拉契数列?
 鉴于该问题使用递归解决,实在无效率可言。请问,如何不使用递归,来实现上述函数?


5.编写出一个从字符串到长整形的转换函数?