c语言函数试题及答案
一、单项选择题(每题2分,共20分)
1.以下关于C语言函数定义的说法正确的是()
A.函数必须有返回值
B.函数可以没有参数
C.函数定义可以嵌套
D.函数不能调用自身
答案:B
2.若函数的定义形式为:`voidfun(inta,charb)`,则该函数()
A.有返回值且返回值为void类型
B.有返回值且返回值为int类型
C.无返回值
D.有返回值且返回值为char类型
答案:C
3.以下函数声明正确的是()
A.`intfun(inta;intb);`
B.`intfun(inta,intb)`
C.`intfun(inta,intb);`
D.`intfuna,b;`
答案:C
4.在C语言中,函数调用时()
A.实参和形参各占独立的存储单元
B.实参和形参共用存储单元
C.由系统自动确定实参和形参是否共用存储单元
D.以上都不对
答案:A
5.若有函数定义`intadd(inta,intb){returna+b;}`,则函数返回值类型是()
A.void
B.int
C.不确定
D.由调用函数时决定
答案:B
6.以下哪种函数不能被其他源文件调用()
A.全局函数
B.静态函数
C.内联函数
D.普通函数
答案:B
7.函数调用时,实参的个数和类型应该与()一致。
A.函数定义中的形参个数和类型
B.函数声明中的形参个数和类型
C.A和B都对
D.A和B都不对
答案:C
8.以下关于函数递归的说法错误的是()
A.递归函数必须有终止条件
B.递归函数效率一定比非递归函数高
C.递归函数调用自身
D.递归函数可能导致栈溢出
答案:B
9.若有函数`voidswap(inta,intb)`,调用该函数实现两个整数交换正确的是()
A.`intx=5,y=10;swap(x,y);`
B.`intx=5,y=10;swap(x,y);`
C.`intx=5,y=10;swap(x,y);`
D.`intx=5,y=10;swap(x,y);`
答案:B
10.函数定义中形参变量的作用域是()
A.整个程序
B.函数定义所在源文件
C.该函数内部
D.从定义处到文件结尾
答案:C
二、多项选择题(每题2分,共20分)
1.以下属于C语言函数特点的有()
A.模块化
B.提高代码复用性
C.可以嵌套定义
D.可以嵌套调用
答案:ABD
2.关于函数声明,正确的是()
A.函数声明可以省略形参名
B.函数声明必须在函数调用之前
C.函数声明和函数定义中的形参个数和类型必须一致
D.函数声明的作用是把函数的名字、函数类型以及形参类型、个数和顺序通知编译系统
答案:ABCD
3.以下哪些情况函数返回值类型可以省略()
A.函数返回值为int类型
B.函数没有返回值
C.函数返回值为void类型
D.函数返回值为char类型
答案:AC
4.调用函数时,实参可以是()
A.常量
B.变量
C.表达式
D.函数调用
答案:ABCD
5.以下关于函数参数传递说法正确的是()
A.实参向形参传递值
B.形参向实参传递值
C.可以通过指针实现双向数据传递
D.函数参数传递都是单向的
答案:AC
6.以下哪些函数属于标准库函数()
A.`printf`
B.`scanf`
C.`sqrt`
D.`main`
答案:ABC
7.关于静态函数,正确的是()
A.静态函数只能在定义它的源文件中被调用
B.静态函数可以在其他源文件中被调用
C.静态函数的作用域是整个程序
D.静态函数的生存期是整个程序运行期间
答案:AD
8.函数递归调用的条件包括()
A.有递归终止条件
B.每次递归调用都向终止条件靠近
C.递归函数必须有返回值
D.递归函数调用自身
答案:ABD
9.以下哪些函数参数传递方式可以改变实参的值()
A.值传递
B.指针传递
C.数组名作为参数传递
D.引用传递(C语言中没有直接引用传递概念,但类似情况)
答案:BC
10.函数的返回值可以是()
A.基本数据类型
B.指针类型
C.结构体类型
D.数组类型
答案:ABC
三、判断题(每题2分,共20分)
1.函数定义中形参必须指定类型。()
答案:对
2.函数可