智慧记食品医药版:请教C语言

来源:百度文库 编辑:查人人中国名人网 时间:2024/03/29 17:38:20
某级数的前两项A1=1,A2=1,以后各项具有如下关系:
An=An-2+2An-1
下列程序的功能是:要求依次对于整数M=100,1000和10000求出对应的n值,使其满足:Sn<M且Sn+1≥M,这里Sn=A1+A2+…+An,并依次把n值存入数组单元b[0],b[1],b[2]中,请编制jsValue( )函数来实现此功能,最后调用函数writeDat( )把数组b的值输出到out48.dat文件中。
注意:部分源程序已给出。
请勿改动主函数main()和输出函数writeDat()的内容。
#include<stdio.h>
int b[3];

jsValue( )
{int sum=0,n,f[100]={0,1,1};
for(n=3;;n++)
{f[n]=f[n-2]+2*f[n-1];
sum+=f[n];
if(sum<100&&(sum+f[n])>=100)
b[0]=n;
if(sum<1000&&(sum+f[n])>=1000)
b[1]=n;
if(sum<10000&&(sum+f[n])>=10000)
{
b[2]=n;
break;
}
}

}

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("out48.dat","w");
fprintf(fp,"%d\n%d\n%d\n",b[0],b[1],b[2]);
fclose(fp);
}
为什么运行结果不是:
6
9
11
请指教!!!!

jsValue( )函数有误,应该这样写:

jsValue( )
{int sum=2,n,f[100]={0,1,1}; //n是从3开始的,如果sum=0,f[1]和f[2]就没有加进来
for(n=3;;n++)
{f[n]=f[n-2]+2*f[n-1];
if(sum<100&&(sum+f[n])>=100)
b[0]=n-1;
if(sum<1000&&(sum+f[n])>=1000)
b[1]=n-1;
if(sum<10000&&(sum+f[n])>=10000)
{
b[2]=n-1;
break;
}
sum+=f[n]; //先判断,再加f[n],否则f[n]就重复加了
}

int sum=2,n,f[100]={0,1,1}; //n是从3开始的,如果sum=0,f[1]和f[2]就没有加进来
for(n=3;;n++)
{f[n]=f[n-2]+2*f[n-1];
if(sum<100&&(sum+f[n])>=100)
b[0]=n-1;
if(sum<1000&&(sum+f[n])>=1000)
b[1]=n-1;
if(sum<10000&&(sum+f[n])>=10000)
{
b[2]=n-1;
break;
}
sum+=f[n]; //先判断,再加f[n],否则f[n]就重复加了
}

你比我还高手你是学什么的?
我是大一的也是才学的C语言我怎么看都看不懂哦.你怎么学习的啊

太长了!!1

太长了!!我不会