C趣味程序百例(07)求車速

字號:

22.求車速
     一輛以固定速度行駛的汽車,司機在上午10點看到里程表上的讀數(shù)是一個對稱數(shù)(即這個數(shù)從左向右讀和從右向左讀是完全一樣的),為95859。兩小時后里程表上出現(xiàn)了一個新的對稱數(shù)。問該車的速度是多少?新的對稱數(shù)是多少?
    *題目分析與算法設(shè)計
     根據(jù)題意,設(shè)所求對稱數(shù)為i,其初值為95589,對其依次遞增取值,將i值的每一位分解后與其對稱位置上的數(shù)進行比較,若每個對稱位置上的數(shù)皆相等,則可判定i即為所求的對稱數(shù)。
    *程序說明與注釋
    #include
    void main()
    {
     int t,a[5]; /*數(shù)組a存放分解的數(shù)字位*/
     long int k,i;
     for(i=95860;;i++) /*以95860為初值,循環(huán)試探*/
     {
     for(t=0,k=100000;k>=10;t++) /*從高到低分解所取i值的每位數(shù)*/
     { /* 字,依次存放于a[0]~a[5]中*/
     a[t]=(i%k)/(k/10);
     k/=10;
     }
     if((a[0]==a[4])&&(a[1]==a[3]))
     {
     printf("The new symmetrical number kelometers is:%d%d%d%d%d\n",
     a[0],a[1],a[2],a[3],a[4]);
     printf("The velocity of the car is: %.2f\n",(i-95859)/2.0);
     break;
     }
     }
    }
    *運行結(jié)果
     The new symmetrical number kelometers is:95959.
     The velocity of the car is:50.00
    *思考題
     將一個數(shù)的數(shù)碼倒過來所得到的新數(shù)叫原數(shù)的反序數(shù)。如果一個數(shù)等于它的反序數(shù),則稱它為對稱數(shù)。求不超過1993的的二進制的對稱數(shù)。