1、一、单选题1、以下函数返回值的类型是( )。int fff(float x) x=x+5; return x;A.无法确定B.int类型C.void 类型D.与参数x的类型相同答案:B2、以下叙述错误的是( )。A.函数调用可以作为一个函数的实参B.函数调用可以作为一个函数的形参C.函数调用可以出现在一个表达式中D.函数允许递归调用答案:B3、以下说法正确的是( )。A.C程序总是从第一个定义的函数开始执行B.C程序中的main()函数必须放在程序的开始处C.C程序中,被调用的函数必须在main()函数中定义D.C程序总是从主函数main()开始执行答案:D4、关于函数的定义,叙述错误的是(
2、)。A.必须给出函数完成的功能语句B.必须指出函数的名字和类型C.函数参数可有可无D.函数必须要有返回语句答案:D5、关于函数原型,叙述错误的是( )。A.函数可以不必进行声明,可以放在程序的任意位置B.被调用函数在主调函数之前定义,可以省略函数原型声明C.当自定义函数被放在了主调函数的后面,就需要在函数调用之前,加上函数的原型声明D.所有函数定义放在main函数之前,可以省略原型声明答案:A6、下列函数定义中,正确的是( )。A.int max1(int a,int b);return ab?a:b;B.int max1(a,b)int a,b;return ab?a:b;C.int max
3、1(int a,b)return ab?a:b;D.int max1(int a,int b)return ab?a:b;答案:D二、判断题7、模块化程序设计方法是采用逐步分解、分而治之的方法处理问题。(对)8、函数的表达式调用必须是有返回值的函数调用。(对)9、函数通过return语句可以向主调用函数返回多个值。(错)10、一个函数中有且只能有一个return 语句。(错)三、填空题11、数组作为函数参数进行函数调用时,实参应当采用(数组名)。12、以下函数的功能是连接两个字符串,请完善程序。(stri=0 或 stri=0)void str_cat(char str1 , char str
4、2 , char str )int i,j;for(i=0;str1i!= 0;i+)stri=str1i;for(j=0;str2j!=0;j+)stri+=str2j;13、以下函数的功能是计算n!,请完善程序。(sum*i 或 i*sum)long mul(int n) int i=1; long sum; if(n=0) return 1; else sum=1; while(i=n) sum= ; i+; return sum;14、在调用一个函数的过程中,直接或间接地调用该函数本身,称为函数的(递归)调用。15、完善下列程序(void data(int b33); 或 void data(int b3);)#include _int main() int a33,i,j; data(a); for(i=0;i3;i+) for(j=0;j3;j+) printf(%3d,aij); printf(n); return 0;void data(int b33) int i,j; for(i=0;i3;i+) for(j=0;j3;j+) if(i=0|i=2|j=0|j=2) bij=6; else bij=1;