- 相關(guān)推薦
2016計(jì)算機(jī)三級(jí)網(wǎng)絡(luò)技術(shù)上機(jī)考試題及答案
編寫函數(shù)jsValue(),它的功能是求Fibonacci數(shù)列中大于t的最小的一個(gè)數(shù),結(jié)果由函數(shù)返回,其中Fibonacci數(shù)列F(n)的定義為:
F(0)=0,F(xiàn)(1)=1
F(n)=F(n-1)+F(n-2)
最后調(diào)用函數(shù)writeDat(),把結(jié)果輸出到文件OUT80.DAT中。
例如:當(dāng)t = 1000時(shí),函數(shù)值為1597。
注意:部分源程序已給出。
請(qǐng)勿改動(dòng)主函數(shù)main()和寫函數(shù)WriteDat()的內(nèi)容。
試題程序:
#include
void writeDat();
int jsValue(int t)
{
}
void main()
{
int n;
n=1000;
printf("n=%d, f=%d\n", n, jsValue(n));
writeDat();
}
void writeDat()
{
FILE *out;
int s;
out = fopen("OUT80.DAT", "w");
s = jsValue(1000); printf("%d",s);
fprintf(out, "%d\n", s);
fclose(out);
}
【參考答案及解析】
int jsValue(int t)
{
int f1=0,f2=1,fn; /*定義變量存儲(chǔ)Fibonacci數(shù),初始化數(shù)列的前兩項(xiàng)*/
fn=f1+f2; /*計(jì)算下一個(gè)Fibonacci數(shù)*/
while(fn<=t)>
{
f1=f2;
f2=fn;
fn=f1+f2;
}
return fn; /*返回Fibonacci數(shù)列中大于t的最小的一個(gè)數(shù)*/
}
【解析】解答本題的關(guān)鍵是要充分理解題意,只有理解了題意本身的數(shù)學(xué)過程,才能把數(shù)學(xué)過程轉(zhuǎn)化為程序邏輯。根據(jù)已知數(shù)列,我們不難發(fā)現(xiàn):在 Fibonacci數(shù)列中,從第三項(xiàng)開始,每一項(xiàng)都可以拆分為前兩項(xiàng)之和。本題要求找到該數(shù)列中"大于t的最小的一個(gè)數(shù)"。這里可以借助一個(gè)while循環(huán)來依次求數(shù)列中的數(shù),直到出現(xiàn)某一項(xiàng)的值大于t,那么這一項(xiàng)就是"大于t的最小的一個(gè)數(shù)"。
【計(jì)算機(jī)三級(jí)網(wǎng)絡(luò)技術(shù)上機(jī)考試題及答案】相關(guān)文章:
計(jì)算機(jī)三級(jí)網(wǎng)絡(luò)技術(shù)上機(jī)題庫及答案05-13
計(jì)算機(jī)三級(jí)網(wǎng)絡(luò)技術(shù)上機(jī)考試題04-04
最新計(jì)算機(jī)三級(jí)網(wǎng)絡(luò)技術(shù)上機(jī)試題及答案01-03
2016計(jì)算機(jī)三級(jí)網(wǎng)絡(luò)技術(shù)上機(jī)題及答案07-28
計(jì)算機(jī)三級(jí)網(wǎng)絡(luò)技術(shù)考試題及答案08-01
計(jì)算機(jī)三級(jí)網(wǎng)絡(luò)技術(shù)上機(jī)模擬題及答案04-18
計(jì)算機(jī)三級(jí)網(wǎng)絡(luò)技術(shù)考試題及答案201606-09