2006年9月全國等級考試三級c語言上機題庫(二十)

題目20(無憂id 80 fibonacci數列題)

 

編寫函式jsvalue,它的功能是:求fibonacci數列中大於t的最小的一個數,結果由函式返回。其中fibonacci數列f(n)的定義為:

f(0)=0,f(1)=1

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

最後調用函式writedat()讀取50個數據t,分別得出結果且把結果輸出到檔案out.dat中。

例如:當t=1000時,函式值為:1597。

部分源程式存在檔案prog1.c中。

請勿改動主函式main()和寫函式writedat()的內容。

#include <stdio.h>

 

int jsvalue(int t)

{ int f0=0,f1=1,fn;

fn=f0+f1;

while(fn<=t)

{ f0=f1;

f1=fn;

fn=f0+f1;

}

return fn;

}

 

main()

{

int n;

n=1000;

printf("n=%d,f=%d\n",n,jsvalue(n));

writedat();

}

 

writedat()

{

file *in,*out;

int i,n,s;

 

in=fopen("in.dat","r");

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

for(i=0;i<50;i++){

fscanf(in,"%d",&n);

s=jsvalue(n);

printf("%d\n",s);

fprintf(out,"%d\n",s);

}

fclose(in);

fclose(out);

}