打印本文 打印本文  关闭窗口 关闭窗口  
C趣味程序百例(07)求车速
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 13:59:21  文章录入:杜斌  责任编辑:杜斌

22.求车速
    一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859。两小时后里程表上出现了一个新的对称数。问该车的速度是多少?新的对称数是多少?
*题目分析与算法设计
    根据题意,设所求对称数为i,其初值为95589,对其依次递增取值,将i值的每一位分解后与其对称位置上的数进行比较,若每个对称位置上的数皆相等,则可判定i即为所求的对称数。
*程序说明与注释
#include<stdio.h>
void main()
{
    int t,a[5];            /*数组a存放分解的数字位*/
    long int k,i;
    for(i=95860;;i++)      /*以95860为初值,循环试探*/
    {
        for(t=0,k=100000;k>=10;t++)   /*从高到低分解所取i值的每位数*/
        {                               /* 字,依次存放于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;
        }
    }
}
*运行结果
    The new symmetrical number kelometers is:95959.
    The velocity of the car is:50.00
*思考题
    将一个数的数码倒过来所得到的新数叫原数的反序数。如果一个数等于它的反序数,则称它为对称数。求不超过1993的最大的二进制的对称数。
打印本文 打印本文  关闭窗口 关闭窗口