函数fib1和fib2存在错误,只需分别修改其中的一行代码即可改正错误。 (1)函数fib1不能通过编译,请写出fib1中错误所在行修改正确后的完整代码。 (2)函数fib2在n≤2时不能获得正确结果,请写出fib2中错误所在行修改正确后的完整

admin2009-09-20  31

问题 函数fib1和fib2存在错误,只需分别修改其中的一行代码即可改正错误。
   (1)函数fib1不能通过编译,请写出fib1中错误所在行修改正确后的完整代码。
   (2)函数fib2在n≤2时不能获得正确结果,请写出fib2中错误所在行修改正确后的完整代码。  
将函数fib1和fib2改正后进行测试,发现前46项都正确,而第47项的值是一个负数,请说明原因。

选项

答案运算结果超出范围,或运算结果超出long型数据的最大值,或溢出

解析 C语言提供的基本数据类型long所表示的整数数据范围为[-231,231-1],即-2147483648~2147483647,而菲波那契数列是单调递增的数列,因此函数fib1和fib2改正后运行时,只要项数n超过某个值,计算结果一定会溢出,此后的计算结果也不再正确了。溢出情况发生时,原本是正数的计算结果表现为负数,或者原本是负数的计算结果表现为正数。
转载请注明原文地址:https://kaotiyun.com/show/JIjZ777K
0

最新回复(0)