2006年計算機等級考試三級上機題庫練習及答案(6)

字號:

第11題:
     某級數(shù)的前兩項A1=1,A2=1,以后各項具有如下關(guān)系:
    An=An-2+2An-1
    下列程序的功能是:要求依次對于整數(shù)M=100、1000和10000求出對應的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[]中的值輸出到out11.dat文件中。
    請勿改動主函數(shù)main()和寫函數(shù)writeDat()的內(nèi)容。
    #include
    int b[3];
    void jsValue()
    {
    }
    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("out11.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);
    }
    【答案】
    void jsValue()
    {
    int A1=1,A2=1,n=1,An;
    int sum0,sum;
    sum0=A1+A2;
    while(1)
    {
    An=A1+A2*2;
    sum=sum0+An;
    A1= A2; A2= An;n++;
    if(sum0<100&&sum>100)b[0]=n;
    if(sum0<1000&&sum>1000)b[1]=n;
    if(sum0<10000&&sum>10000){b[2]=n;break;}
    sum0=sum;
    }
    }
    【解析】
    考點:(1)計算數(shù)列的前n項和Sn;
    (2)找到著滿足條件的Sn?!?