c 算法面试题及答案.doc
c算法面试题及答案
一、单项选择题(每题2分,共10题)
1.在C语言中,函数的返回值类型是由()决定的。
A.return语句中的表达式类型
B.调用该函数的主调函数类型
C.定义函数时指定的函数类型
D.形参的数据类型
答案:C
2.以下哪种数据结构在C语言中适合实现先进先出(FIFO)操作?
A.栈
B.队列
C.树
D.图
答案:B
3.C语言中,若有定义inta=5;表达式a++的值为()。
A.5
B.6
C.4
D.不确定
答案:A
4.对于一个已经正确定义的二维数组inta[3][4];其数组元素a[2][3]的地址可以表示为()。
A.a[2][3]
B.a[2]+3
C.(a+2)+3
D.以上都对
答案:D
5.在C语言中,以下哪个函数用于动态内存分配?
A.malloc()
B.calloc()
C.realloc()
D.以上都是
答案:D
6.C语言中,若要打开一个只用于读取的文本文件,应使用()模式。
A.r
B.w
C.a
D.rb
答案:A
7.下面关于C语言中结构体的说法,正确的是()。
A.结构体不能嵌套定义
B.结构体成员不能是指针类型
C.结构体可以包含不同类型的成员
D.结构体变量不可以作为函数参数
答案:C
8.C语言中,函数调用时()。
A.实参和形参各占独立的存储单元
B.实参和形参共用存储单元
C.由用户指定实参和形参是否共用存储单元
D.以上说法都不对
答案:A
9.在C语言中,若有定义intp;p=(int)malloc(sizeof(int));则释放p所指向的内存空间的正确操作是()。
A.free(p);
B.deletep;
C.直接将p赋值为NULL,不需要释放
D.以上都不对
答案:A
10.C语言中,用于获取字符串长度的函数是()。
A.strlen()
B.sizeof()
C.length()
D.size()
答案:A
二、多项选择题(每题2分,共10题)
1.在C语言中,以下哪些是合法的变量名?()
A._var1
B.1_var
C.var_1
D.var1
答案:AC
2.以下关于C语言中的数组说法正确的是()。
A.数组元素的类型可以是基本数据类型,也可以是结构体等复合数据类型
B.数组的大小在定义后不能改变
C.可以使用动态内存分配函数来创建大小可变的数组
D.数组名是一个常量指针,指向数组的首元素
答案:ABCD
3.在C语言中,下列哪些操作可以用于操作字符串?()
A.strcpy()
B.strcat()
C.strcmp()
D.strlen()
答案:ABCD
4.关于C语言中的函数指针,以下说法正确的是()。
A.函数指针可以指向任何类型的函数
B.可以通过函数指针调用函数
C.函数指针变量的定义形式为:返回值类型(指针变量名)(形参列表);
D.函数指针数组可以用来实现多态性
答案:BCD
5.C语言中,以下哪些属于逻辑运算符?()
A.
B.||
C.!
D.
答案:ABC
6.当使用递归算法解决问题时,需要考虑()。
A.递归的终止条件
B.递归的公式
C.递归的深度限制
D.递归函数的返回值类型
答案:ABCD
7.在C语言中,以下哪些是位运算操作符?()
A.
B.|
C.^
D.~
答案:ABCD
8.关于C语言中的预处理命令,以下说法正确的是()。
A.define可以用来定义常量
B.include用于包含头文件
C.ifdef、ifndef、endif等用于条件编译
D.预处理命令在编译之前执行
答案:ABCD
9.在C语言中,若有结构体定义如下:
structstudent{
charname[20];
intage;
floatscore;
};
以下哪些操作是可行的?()
A.定义结构体变量并初始化
B.将结构体变量作为函数参数传递
C.定义结构体指