C趣味程序百例(07)求车速
22.求车速
当一辆车以固定速度行驶时,司机在上午10点看到里程表上的读数是一个对称的数字(即这个数字与从左到右读出的数字完全相同),是95859。两个小时后,里程表上出现了一个新的对称数字。汽车的速度是多少?的新对称数是什么?
*问题分析及算法设计
根据问题的含义,设所需对称数为I,其初始值为95589。然后,依次增加数值,分解I的值的每一位并与其对称位置的数字进行比较。如果每个对称位置上的数相等,则可以确定I是所需的对称数。
*程序描述和注释
# include
void main()
{
int t,a[5];/*数组A存储分解后的数字位*/
long int k,I;
for(I = 95860;;++)/*取95860为初始值,loop trial */
{
for(t = 0,k = 100000k > = 10++)/*由高到低分解的I值每一位的字*/
{/*依次存入a[0]~ a[5]*/
a[t]=(I % k)/(k/10);
k/= 10;
}
if((a[0]= = a[4])& &(a[1]= = a[3])
{
printf("新对称数kelometers为:%d%d%d%d\n ",
a[0],a[1],a[2],a[3],a[4]);
printf("汽车的速度为:%.2f\n ",(I-95859)/2.0);
break;
}
}
}
*运行结果
新的对称数kelometers为:95959。
车的速度是:50.00
*思考题【如果一个数等于它的逆序数,则称为对称数。找出不超过1993的二进制对称数。
0条评论