100道经典的c语⾔⾯试题100 条经典C语⾔笔试题⽬
题⽬来源:
1、中兴、华为、慧通、英华达、微软亚洲技术中⼼等中
外企业⾯试题⽬;
2、C 语⾔⾯试宝典(林锐《⾼质量编程第三版》)。
说明:
1、部分C 语⾔⾯试题中可能会参杂部分和C++ 相关的知
识,为了保持题⽬的灵活性故保留,但选题最终还是
会以C 语⾔题⽬为主体;
2、以上公司的⾯试题⽬已成为国内中⼩型企业公司出题
模板;
3、由于本⼈的能⼒有限加上时间仓促,本课件肯定存在
不⾜之处,恳请各位同学批评指正。
1、请填写bool , float,  指针变量 与“零值”⽐较的if
语句。
提⽰:这⾥“零值”可以是0, 0.0 , FALSE  或者“空指针”
。例如int 变量n  与“零值”⽐较的if  语句为:
if ( n == 0 )
if ( n != 0 )
以此类推。
(1)请写出bool flag  与“零值”⽐较的if  语句:
【标准答案】if ( flag )    if ( !flag )
100 条经典 C语⾔笔试题⽬
(2)请写出float  x  与“零值”⽐较的if  语句:
山西招生考试网入口2023
【标准答案】 const float EPSINON = 0.00001;
if ((x >= - EPSINON) && (x <= EPSINON)
不可将浮点变量⽤“==” 或“!=” 与数字⽐较,应该设法
转化成“>=” 或“<=” 此类形式。
100 条经典 C语⾔笔试题⽬
(3)请写出char  *p  与“零值”⽐较的if  语句
【标准答案】 if (p == NULL)    if (p != NULL)
全国国家公务员考试网2、以下为Linux下的32 位C 程序,请计算sizeof 的
值。
char  str[] = “Hello” ;
char  *p = str ;
i nt    n = 10;
请计算
(1)sizeof (str ) =                  (2)s i zeof ( p ) =
(3)sizeof ( n ) =
【标准答案】
(1)6、(2)4 、(3 )4
(4)void Func ( char str[100])
{
…… ;
}
请计算sizeof( str ) =
(5)void * p = malloc( 100 );
请计算sizeof ( p ) =
【标准答案】(4)4、(5)4
4、⽤变量a 给出下⾯的定义
e) ⼀个有10个指针的数组,该指针是指向⼀个整型数
的;山西事业编考试时间2023
f)  ⼀个指向有10个整型数数组的指针;
g) ⼀个指向函数的指针,该函数有⼀个整型参数并返
回⼀个整型数;
h) ⼀个有10个指针的数组,该指针指向⼀个函数,该
函数有⼀个整型参数并返回⼀个整型数;
【标准答案】e)int *  a[10];      f)int (*a)[10]                                g)int (*a)(int);  h) int (*a[10])(int)
5、设有以下说明和定义:
typedef u nion {long i; int k[5]; char c;} DATE;
struct data { int cat; DATE cow; double dog;} too; DATE max;
则语句printf("%d",sizeof(struct date)+sizeof(max)); 的执⾏结果是:_____
【标准答案】DATE是⼀个union, 变量公⽤空间.  ⾥⾯最
⼤的变量类型是int[5],  占⽤20个字节.  所以它的⼤⼩是
20
data 是⼀个struct,  每个变量分开占⽤空间.  依次为int4 + DATE20 + double8 = 32.
所以结果是20 + 32 = 52.
当然… 在某些16位编辑器下, int 可能是2字节,那么结果
是int2 + DATE10 + double8 = 20
6、请问以下代码有什么问题:
int main()
{
char a;
char *str=&a;
strcpy(str,"hello");河北省教育考试院成绩查询入口
printf(str);
return 0;
}
【标准答案】没有为str分配内存空间,将会发⽣异常
问题出在将⼀个字符串复制进⼀个字符变量指针所指
地址。虽然可以正确输出结果,但因为越界进⾏内在
读写⽽导致程序崩溃。
7、请问以下代码有什么问题:
char* s="AAA";
printf("%s",s);
s[0]='B';
printf("%s",s);
有什么错?
【标准答案】"AAA" 是字符串常量。s是指针,指向这个
字符串常量,所以声明s的时候就有问题。
cosnt char* s="AAA";
然后⼜因为是常量,所以对是s[0] 的赋值操作是不合法的。
8、int (*s[10])(int)  表⽰的是什么啊
【标准答案】int (*s[10])(int)  函数指针数组,每个指针
指向⼀个int func(intp aram) 的函数。
9、c和c++ 中的struct有什么不同?
【标准答案】c和c++ 中struct的主要区别是c中的struct 不可以含有成员函数,⽽c++ 中的struct可以。c++ 中struct和class的主要区别在于默认的存取权限不同,struct默认为public ,⽽class默认为private
10、void getmemory(char *p)
{
p=(char *) malloc(100);
strcpy(p,“hello world”);
}
int main( )
{
char *str=NULL;
getmemory(str);
printf(“%s/n”,str);
free(str);
return 0;
} 会出现什么问题?
【标准答案】程序崩溃,getmemory中的malloc 不能返回动态内存,free ()对str操作很危险。
11、char szstr[10];
四级英语准考证打印入口strcpy(szstr,"0123456789");
产⽣什么结果?为什么?
【标准答案】长度不⼀样,出现段错误。
100 条经典 C语⾔笔试题⽬
12、数组和链表的区别?
【标准答案】数组:数据顺序存储,固定⼤⼩;链表:数据可以随机存储,⼤⼩可动态改变
13、void main()
{
char aa[10];
printf(“%d”,strlen(aa));
}
会出现什么问题?打印结果是是多少?
【标准答案】sizeof()和初不初始化,没有关系,strlen()和初始化有关,打印结果值未知。
14、给定结构struct A
{
char t:4;
char k:4;
unsigned short i:8;
unsigned long m;
}; 问sizeof(A) = ?
中国教育考试网登录入口四六级
【标准答案】8
15、struct name1{
char str;
short x;
int num;
} ;求sizeof(name1)?
【标准答案】8
16、struct name2{
char str;
int num;
short x;
}; 求sizeof(name2)?
【标准答案】12