2006年9月全國等級考試三級c語言上機(jī)題庫(四十一)

字號:

★☆題目41(無憂id 51 SIX/NINE問題)
    下列程序prog1.c的功能是:計算出自然數(shù)SIX和NINE,它們滿足的條件是SIX+SIX+SIX=NINE+NINE的個數(shù)cnt以及滿足此條件所有的SIX與NINE的和SUM。請編寫函數(shù)countValue()實現(xiàn)程序的要求,最后調(diào)用函數(shù)writeDat()把結(jié)果cnt和sum,輸出到文件OUT15.DAT中。
    其中的S,I,X,N,E各代表一個十進(jìn)制數(shù)字。
    部分源程序存在文件prog1.c中。
    請勿改動主函數(shù)main()和輸出數(shù)據(jù)函數(shù)writeDat()的內(nèi)容。
    #include
    int cnt,sum;
    void countValue()
    { int s,i,x,n,e,six,nine;
    for(s=1;s<10;s++)
    for(i=0;i<10;i++)
    for(x=0;x<10;x++)
    for(n=1;n<10;n++)
    for(e=0;e<10;e++)
    { six=s*100+i*10+x;
    nine=n*1000+i*100+n*10+e;
    if(3*six==2*nine)
    { cnt++;sum+=six+nine;}
    }
    }
    void main()
    {
    cnt=sum=0;
    countValue();
    printf("滿足條件的個數(shù)=%d\n",cnt);
    printf("滿足條件所有的SIX與NINE的和=%d\n",sum);
    writeDat();
    }
    writeDat()
    {
    FILE *fp;
    fp=fopen("OUT15.DAT","w");
    fprintf(fp,"%d\n%d\n",cnt,sum);
    fclose(fp);
    }
    另一種經(jīng)典解法:
    void countValue()
    { int i;
    for(i=666;i<=999;i=i+2)
    if((i/10%10==(3*i/2)/100%10)&&((3*i/2)/1000==(3*i/2)%100/10))
    {cnt++;sum+=i+3*i/2;}
    }
    運算結(jié)果為:
    滿足條件的個數(shù)=4
    滿足條件所有的SIX與NINE的和=9430