某级数的前两项A1=1,A2=1,以后各项具有如下关系:An=An-2+2An-1。(n-2 n-1 均为小标)
下列程序的功能是:要求依次对于整数M=100、1000和10000求出对应的n值,使其满足:Sn<M且Sn+1>=M(n+1为下标),这里Sn=A1+A2+…+An,并依次把n值存入数组单元b[0]、b[1]和b[2]中,请编制jsvalue()函数来实现此功能,最后调用函数writeDat()把数组b[]中的值输出到OUT98.DAT文件中。
程序很挫,今天晚上脑子很乱。随便编的。望各位能给小弟修改下。。。。。。
#include <stdio.h>
int b[3];
void jsvalue()
{
int i=1,s1=1,s2=1,s0=s2+2*s1,sum=s1+s2,j=sum;//s1表示s(n-1) s2表示s(n-2) s0表示s(sn)
while(!((j<100)&&(sum>=100)))
{
j=sum;
sum = sum+s0;
s2 = s1;
s1 = s0;
s0 = s2+2*s1;//s0表示Sn
i++;
}
b[0]=i;
while(!((j<1000)&&(sum>=1000)))
{
j=sum;
sum = sum+s0;
s2 = s1;
s1 = s0;
s0 = s2+2*s1;
i++;
}
b[1]=i;
while(!((j<10000)&&(sum>=10000)))
{
j=sum;
sum = sum+s0;
s2 = s1;
s1 = s0;
s0 = s2+2*s1;
i++;
}
b[2]=i;
}
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("OUT98.DAT","w");
fprintf(fp,"%d\n%d\n%d\n",b[0],b[1],b[2]);
fclose(fp);
}
博主个人网站 http://henghui.web-126.com/