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

admin2021-09-09  37

问题 某级数的前两项A1-1,A2-1。以后各项具有如下关系:
    某级数的前两项A1-1,A2-1。以后各项具有如下关系:
    An=An-2+2An-1
    请编制Find_n()函数,其功能是:要求依次对于整数M=100,1000和10000求出对应的n值,使其满足:Sn<M且Sn+1≥M,这里Sn=A1+A2+…+An,并依次把n值存入数组单元b[0],b[1],b[2]中,函数WriteData()负责把结果输出到OUT.DAT文件中。
    注意;部分源程序已给出。
    请勿改动主函数main()和写函数WriteData()的内容。
    试题程序:
    #include
    int b[3];
    void WriteData();
    void Find_n()
    {
    }
    void main()
    {
    Find_n();
    printf(“M=100,n=%d\nM=1000,n=%d\nM=
    10000,n=%d\n”,
    b[o],b[1],b[2]);
    WriteData();
    }
    void WriteData()
    {
    FILE*fp;
    fp=fopen(“OUT.DAT”,“W”);
    fprintf(fp,“%d\n%d\n%d\n”,b[0],h[1].b[2]);
    fclose(fp);
    }

选项

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

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

最新回复(0)