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

★☆題目35(無憂id 20 級數運算題)

 

某級數的前兩項a1=1,a2=1,以後各項具有如下關係:

an=an-2+2an-1(註:n-2與n-1為下標)

下列程式prog1.c的功能是:要求依次對於整數m=100,1000和10000求出對應的n值,使其滿足:sn<m且sn+1>=m,這裡sn=a1+a2+...+an,並依次把n值存入數組單元b[0],b[1]和b[2]中,請編制jsvalue()函式來實現此功能,最後調用函式writedat()把數組b[]中的值輸出到out.dat檔案中。

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

#include <stdio.h>

int b[3];

 

jsvalue()

{int a1=1,a2=1,a12,sn,k=2;

sn=a1+a2;

while(1)

{a12=a1+2*a2;

if(sn<100&&sn+a12>=100) b[0]=k;

if(sn<1000&&sn+a12>=1000) b[1]=k;

if(sn<10000&&sn+a12>=10000) {b[2]=k;break;}

sn=sn+a12;

a1=a2;a2=a12;

k++;

}

}

 

main()

{

jsvalue();

printf("m=100,n=%d\nm=1000,n=%d\nm=10000,n=%d\n",b[0],b[1],b[2]);

writedat();

}

 

writedat()

{

file *fp;

 

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

printf("%d\n%d\n%d\n",b[0],b[1],b[2]);

fprintf(fp,"%d\n%d\n%d\n",b[0],b[1],b[2]);

fclose(fp);

}

 

運行結果為:

m=100,n=6

m=1000,n=9

m=10000,n=11