當前位置:才華齋>計算機>計算機三級>

最新計算機三級網路技術上機試題及答案

計算機三級 閱讀(1.08W)

編寫函式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的最小的一個數"。