一、填空题(16分)1、写出float x 与“零值”比较的if语句。 (中兴)2、不能做switch()的参数类型是: (中兴)3、程序的局部变量存在于 中,全局变量存在于 中,动态申请数据存在于 中。4、char a[10],strlen(a)结果为 5、填写如下变量的存储类型表格局部变量全局变量填空说明存储类别autoregisterstaticstaticextern 存储方式动态0r静态存储区动态区、寄存器or静态区生存期程序、函数or 复合语句作用域程序、文件、函数 or 复合语句内何时赋初值函数调用时、编译时、程序加载时未赋初值时是何值未知、0、NULL…6、一个32位的机器,该机器的指针是 位7、下列定义的含义(1)int *p[3];(2)int (*p)[3];(3)int *p(int);(4)int (*p)(int);(5)int *(*p)(int);(6)int (*p[3])(int);(7)int *(*p[3])(int);(8)void *p; 8、设有以下说明和定义:typedef union {long i; int k[5]; char c;} DATE;struct data { int cat; DATE cow; double dog;} too;DATE max;则语句 printf("%d",sizeof(struct data)+sizeof(max));的执行结果是:_______ 二、问答题(30分)1、局部变量能否和全局变量重名?全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?(华为) 2、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?(中兴) 3、形成野指针的主要成因是什么(最少列出3种)(华为 )4、语句for( ;1 ;)有什么问题?它是什么意思?(华为 )5、do……while和while……do有什么区别?(华为 )6、顺序存储和链式存储的区别和优缺点 ?7、何谓链表的头指针、头结点和首元结点?(华为) 8、队列和栈有什么区别?数组和链表的区别? 9、进程和线程的差别。(微软亚洲技术中心的面试题) 10、Heap与stack的差别。(微软亚洲技术中心的面试题) 三、读程序题(12分)1、请写出下列代码的输出内容(华为) #include<stdio.h>main(){ int a,b,c,d; a=10; b=a++; c=++a; d=10*a++; printf("b, c, d: %d, %d, %d", b, c, d); return 0;} 2、写出下列代码的输出内容 #include<stdio.h>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){ int (*p)(int)=&inc; int temp =p(arg1); fun(&temp,&arg1, arg2); printf("%dn",*arg2);}main(){ int a; show(multi,10,&a); return 0;}3、下面这个程序执行后会有什么错误或者效果 :#define MAX 255void main(){ unsigned char A[MAX], i; for (i=0;i<=MAX;i++) A[i]=i;}4、分析下面的代码:说明原因 #include<stdio.h>main(){ char *a = "hello"; char *b = "hello"; if(a==b) printf("YES"); else printf("NO");}四、找错题(12分)1、以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”。请找出代码中的所有错误 。#include"string.h"main(){ char*src="hello,world"; char* dest=NULL; int len=strlen(src); dest=(char*)malloc(len); char* d=dest; char* s=src[len]; while(len--!=0) d++=s--; printf("%s",dest); return 0;} 2、请问下面程序有什么错误? 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; 3、以下是求一个数的平方的程序,请找出错误:#define SQUARE(a)((a)*(a))int a=5;int b;b=SQUARE(a++); 4、请问下面程序有什么错误 ?#include <stdio.h>void getmemory(char *p){ p=(char *) malloc(100); strcpy(p,"hello world");}int main( ){ char *str; getmemory(str); printf("%s/n",str); free(str); return 0;}五.编程题:(1、2题必做,3、4、5题选二,6、7题选一)(30分)(可以只写核心语句)1、交换两个变量的值,不使用第三个变量。即a=3,b=5,交换之后a=5,b=3。(联创 )(5分)2、数组a[N],存放了1至N-1个数,其中某个数重复一次。写一个函数,找出被重复的数字。函数原型:(时间复杂度必须为o(N))(思科)(5分)int do_dup(int a[],int N) 3、已知strcpy函数的原型是:char * strcpy(char * strDest,const char * strSrc);①不调用库函数,实现strcpy函数。②解释为什么要返回char *。//雅虎笔试题(字符串操作) (5分)4、写一个函数比较两个字符串str1和str2的大小,若相等返回0,若str1大于str2返回1,若str1小于str2返回-1。int strcmp ( const char * src,const char * dst)//雅虎笔试题(字符串操作) (5分)5、两个字符串s、t;把t字符串插入到s字符串中i的位置。void insert(char *s, char *t, int i)(慧通) (5分)6、编写一高效算法,将一顺序存储的线性表(设元素均为整型量)中所有零元素向表尾集中,其他元素则顺序向表头方向集中。 (华为) (10分)7、试用C语言编写一个高效算法,将一循环单链表就地逆置。(中国微软) (10分)