当前位置:才华咖 > 互联网计算机 > 计算机 > 计算机三级 > 最新计算机三级网络技术上机试题及答案
手机版

最新计算机三级网络技术上机试题及答案

来源:才华咖 阅读:1.04W 次

编写函数jsValue(),它的功能是求Fibonacci数列中大于t的最小的一个数,结果由函数返回,其中Fibonacci数列F(n)的定义为:

最新计算机三级网络技术上机试题及答案

F(0)=0,F(1)=1

F(n)=F(n-1)+F(n-2)

最后调用函数writeDat(),把结果输出到文件中。

例如:当t = 1000时,函数值为1597。

注意:部分源程序已给出。

请勿改动主函数main()和写函数WriteDat()的内容。

试题程序:

#include

void writeDat();

int jsValue(int t)

{

}

void main()

{

int n;

n=1000;

printf("n=%d, f=%dn", n, jsValue(n));

writeDat();

}

void writeDat()

{

FILE *out;

int s;

out = fopen("", "w");

s = jsValue(1000); printf("%d",s);

fprintf(out, "%dn", s);

fclose(out);

}

  【答案】

int jsValue(int t)

{

int f1=0,f2=1,fn; /*定义变量存储Fibonacci数,初始化数列的前两项*/

fn=f1+f2; /*计算下一个Fibonacci数*/

while(fn<=t) /*如果当前的Fibonacci数不大于t,则继续计算下一个Fibonacci数*/

{

f1=f2;

f2=fn;

fn=f1+f2;

}

return fn; /*返回Fibonacci数列中大于t的'最小的一个数*/

}

  【解析】

解答本题的关键是要充分理解题意,只有理解了题意本身的数学过程,才能把数学过程转化为程序逻辑。根据已知数列,我们不难发现:在Fibonacci数列中,从第三项开始,每一项都可以拆分为前两项之和。本题要求找到该数列中"大于t的最小的一个数"。这里可以借助一个while循环来依次求数列中的数,直到出现某一项的值大于t,那么这一项就是"大于t的最小的一个数"。

本文链接:https://www.caihuaka.com/jsjzs/sanji/z14y4m.html

Copyright © 2024. 才华咖 All right reserved. 浙ICP备20120231号-3

文字美图素材,版权属于原作者。部分文章内容由网友提供推送时因种种原因未能与原作者联系上,若涉及版权问题,敬请原作者联系我们,立即处理。