第10章
函数与程序结构
【练习101】使用递归函数计算1到
之和:若要用递归函数计算sum123…
(
为正整数),请写出该递归函数的递归式子及递归出口。试编写相应程序。解答:递归式子sumisumi1i递归出口sumi0【练习102】请完成下列宏定义:①MINab求ab的最小值②ISLOWERc判断c是否为小写字母③ISLEAPy判断y是否为闰年④CIRFERr计算半径为r的圆周长解答:①MINab:求ab的最小值。defi
eMINababab②ISLOWERc:判断c是否为小写字母。defi
eISLOWERccacz③ISLEAPy:判断y是否为闰年。defi
eISLEAPyy40y1000y4000④CIRFERr:计算半径为r的圆周长。defi
ePI314159defi
eCIRFERr2PIr【练习103】分别用函数和带参宏实现从3个数中找出最大数,请比较两者在形式上和使用上的区别。解答:(1)函数实现i
tmaxi
txi
tyi
tzi
ttifxyifxztxelsetzelseifyztyelsetzretur
t(2)宏实现defi
eMAXxyz
xyxzxzyzyz两者在定义形
f式上完全不同。使用上函数是在执行时,从主调函数转到函数max,然后再返回到主调函数,函数体始终存在;而宏是在编译预处理时,用条件表达式去替换MAXi
txi
tyi
tz,等程序执行时,执行的是条件表达式,而不再存在MAXi
txi
tyi
tz的式子。习题10一、选择题1.要调用数学函数时,在i
clude命令行中应包含A.”stdioh”D.”ctypeh”B.”stri
gh”C。C.”mathh”
2.对于以下递归函数f,调用f4,其返回值为i
tfi
t
if
retur
f
1
elseretur
A.10B.4C.0
A
。
D.以上均不是
3.执行下列程序:defi
eMAxyxyi5iMAii17后变量i的值应为B。A.30D.1B.19C.23
4.宏定义“defi
eDIVabab”,经DIVx5y5开后是A。A.x5y5C.x5y5
引用,替换展
B.x5y5D.x5y5
5.定义带参数的宏“defi
eJHabttaabbt”,对两个参数a、b的值进行交换,下列表述中哪个是正确的C。A.不定义参数a和b将导致编译错误B.不定义参数a、b、t将导致编译错误C.不定义参数t将导致运行错误D.不需要定义参数a、b、t类型6.执行下面程序,正确的输出是A。
fi
tx5y7voidswapi
tzzxxyyzi
tmai
voidi
tx3y8swappri
tf