【正确答案】int fun(int t)
{
int a=1,b=1,c=0,i; /*a代表第n-2项,b代表第n-1项,c代表第n项*/
/*如果求得的数c比指定比较的数小,则计算下一个Fibonacci数,对a,b重新置数*/
do
{
c=a+b;
a=b;
b=c;
}
while (c
【答案解析】根据所给数列定义不难发现,该数列最终的结果是由两个数列之和组成,所以可以在循环内部始终把c看成是前两项之和(即第n项),而a始终代表第n-2项,b始终代表第n-1项(通过不断地重新赋值来实现)。应注意,退出循环时得到的数c是大于指定比较的数的最小的数,而它的前一个数就是小于指定比较的数的最大的数。