★☆題目35(無憂id 20 級數(shù)運算題)
某級數(shù)的前兩項A1=1,A2=1,以后各項具有如下關(guān)系:
An=An-2+2An-1(注:n-2與n-1為下標(biāo))
下列程序prog1.c的功能是:要求依次對于整數(shù)M=100,1000和10000求出對應(yīng)的n值,使其滿足:Sn=M,這里Sn=A1+A2+...+An,并依次把n值存入數(shù)組單元b[0],b[1]和b[2]中,請編制jsValue()函數(shù)來實現(xiàn)此功能,最后調(diào)用函數(shù)writeDat()把數(shù)組b[]中的值輸出到out.dat文件中。
請勿改動主函數(shù)main()和寫函數(shù)writeDat()的內(nèi)容。
#include
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);
}
運行結(jié)果為:
M=100,n=6
M=1000,n=9
M=10000,n=11
某級數(shù)的前兩項A1=1,A2=1,以后各項具有如下關(guān)系:
An=An-2+2An-1(注:n-2與n-1為下標(biāo))
下列程序prog1.c的功能是:要求依次對于整數(shù)M=100,1000和10000求出對應(yīng)的n值,使其滿足:Sn
請勿改動主函數(shù)main()和寫函數(shù)writeDat()的內(nèi)容。
#include
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);
}
運行結(jié)果為:
M=100,n=6
M=1000,n=9
M=10000,n=11

