某级数的前两项A1=1,A2=1,以后各项具有如下关系; An=n-2+2An-1 请编制Find_n()函数,其功能是;要求依次对于整数M=100,1000和10000求出对应的n值,使其满足;Sn

admin2012-07-20  35

问题 某级数的前两项A1=1,A2=1,以后各项具有如下关系;
An=n-2+2An-1
请编制Find_n()函数,其功能是;要求依次对于整数M=100,1000和10000求出对应的n值,使其满足;Sn注意;部分源程序已给出。
请勿改动主函数main()和写函数WriteData()的内容。
试题程序;
#include
int b[3];
void WriteData();
void Find n()
{
}
void main()
{
  Find_n();
  printf("M=i00,n"%d\nM=1000,n=%d\nM=10000,n=%d\n",b[0],b[1],bE2]);
  WriteData();
}
void WriteData()
{
  FILE*fp;
  fp=fopen("0UT.DAT","w");
  fprintf(fp,"%d\n%d\n%d\D",b[0],b[1],b[2]);
  fclose(fp);
}

选项

答案   void Find_n() { int n=1; //定义计数器变量,保存求得的项数 int a1=1,a2=1,an; //用来保存级数的值 int sum0,sum; //用来存储级数的和的变量 sumO=a1+a2; //计算前两项的级数和 while(1) //无条件循环,循环体内有控制是否结束循环的语句 { an=a1+a2*2;//求下一个级数 sum=sum0+an;//求级数和 al=a2;//将a2赋给a1 a2=an;//将an赋给a2 n++; if(sum0<100&&sum>=100) //如果满足Sn<100且Sn+1>=100 b[0]=n//则将n存人数组单元b[0]中 if(sum0<1000&&sum>=1000) //如果满足Sn<100且Sn+1>=1000 b[1]=n;//则将n存人数组单元b[1]中 if(sum0<10000&&sum>=10000) //如果满足Sn<100且Sn+1>=10000 { b[2]=n;//则将n存人数组单元b[2]中 break; //并强行退出循环 } sum0=sum; //将sum赋给sum0,为下一次循环的求和作准备 } }

解析 本题主要考查的是利用循环求级数。由级数的表达式可以看出,级数中的各项可以由循环依次求得。当级数的和达到要求的条件时即可退出循环结构。因为退出循环的两个条件Sn
转载请注明原文地址:https://kaotiyun.com/show/424Z777K
0

最新回复(0)