函数典型例题分析与解答

函数典型例题分析与解答,第1张

函数典型例题分析与解答,第2张

1 外部函数是指________的函数,它可以在_________中被调用。
【分析】当存储类型选用“extern”时,所定义的函数称为外部函数。外部函数可以在其他编译单位中调用(需要对这个函数进行说明)。
【答案】存储类型是“extern”的函数
所有对该函数进行说明过的编译单位
2 假定在同一个编译单位中,函数a()调用了函数b(),则对函数b()不需要说明的情况有下列两种:_____________和________________。
【分析】教材中有明确答案(p116)。
【答案】b()函数的定义地点在a()函数定义地点之前
b()函数的数据类型是int或char
3 在函数间传递数据的四种方式中,不能把被调函数的数据带回到主调函数的是()
①值传递 ②地址传递 ③返回值传递 ④全局外部变量
【分析】值传递方式是利用形式参数和实际参数结合来进行数据传递的一种方式,它是在调用函数时,将实际参数的值传递给形式参数,函授调用结束后,并不将形式参数的当前值传回实际参数。
【答案】①
4 如果函数定义时,形式参数是整型变量,则调用该函数时,实际参数不可以是()
①整型常量 ②字符型变量
③指向整型变量的指针型变量 ④整型表达式
【分析】当形式参数是变量时,实际参数可以是数据类型相同的表达式(常量、变量是表达式的特例),因此,备选答案①④显然是正确的,即不符合题意。而字符型数据可以看成整型数据,所以字符型变量可以当作整型变量,因此备选答案②也是正确的,即不符合题意。只有备选答案③是错误的,因为指针型变量不是整型变量,本题答案应该选取③。
请读者注意,如果使用“*指针型变量”侧是正确的。
【答案】③
5 若函数a()调用了函数b(),而函数b()又调用了函数a(),这样的调用称为_________________调用。
【分析】一般来说,只要是函数调用了自己,则称这样的函数调用为递归调用。如果函数f()调用了函数f(),我们称这样的递归调用为“直接递归调用”;如果函数f()调用了函数g(),而函数g()又调用了函数f(),这样的递归调用称为“间接递归调用”。
【答案】递归(或间接递归)
6 下列表达式中,不能判断字符型变量ch中的字符是英文字母(是则表达式值为非0、否则表达式值为0)的表达式是()
①ch>='A'&&ch<='Z'::ch>='a'&&h<='z'
② toupper(ch)>='A'&&toupper(ch)<='Z'
③ isalpha( ch)
④ !(isdigit(ch))
【分析】备选答案①中的逻辑表达式的含义是:当ch中的字符是大写字母或者小写字母时,结果为1,否则结果为0,该答案不符合题意。备选答案②中使用了系统函数toupper(),该函数功能是将参数对应的字符换成大写字母(如果参数对应的字符不是英文字母则不改变),答案中的逻辑表达式含义是:转换成大写后如果落在'A'到‘Z'之间则值为1,否则值为0。该答案也不符合题意。备选答案③中使用了系统函数isalpha(),该函数功能是判断参数对应的字符是否是英文字母,是则返回非0;否则返回0。显然该答案也不符合题意。只有备选答案④是符合题意的。分析这个答案中的表达式,其中用到了系统函数isdigit(),该函数的功能是判断参数对应的字符是不是数字字符,是则返回非 0,否则返回 0,该答案中的表达式是“! isdigit(ch)”,即 ch中不是数字字符则返回1,否则返回0,因此,该表达式不能判断ch中是否英文字母,所以本题答案应选④。
【答案】④
7 函数调用malloc(sizeof(long)* 2)的功能是申请____________个字节的内存;这批内存的首地址是____________________。
【分析】 系统池数malloc(形参)的功能是申请“形参”个字节的内存,函数的返回值就是这批内存的首地址。题目中的参数是“snzeof(long)*2”,sizeof(long)是长整型数据的字节数,其值为 4。而函数malloc(sizeof(long)* 2)调用的参数是 sizeof(long)* 2,其值为 8。
【答案】 8
函数调用的返回值
8 下列函数定义中,正确的是()
①int f(int x,y) ② int *f(int x,int*y)
{return(y);} { return(y);}
③ int f( x,*y) ④ void f( int x;)
int x, int y; {return(x);}
{return;}
【分析】分析备选答案①:形式参数表不正确,两个整型变量应该写成 int x,int y。分析备选答案②:这是一个指针型函数,函数返回值是指向整型数据的指针值,形式参数表也是正确的,在函数体中有带返回值的返回语句,且返回值就是指向整型数据的指针变量值,该答案符合题意。分析备选答案③:形式参数表中的int *y是错误的,应该为int y;这样形式参数说明中的 int y也是错误的,应该写成 int *y;函数体中的返回语句也是错误的,因为这个函数是有返回值的函数。分析备选答案④:形式参数表中最后的“分号”不能有 ;函数体中的返回语句只能用“ return;”,因为该函数是无返回值的函数。
【答案】②

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 函数典型例题分析与解答

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情