问题:一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859.两个小时后里程表上出现了一个新的对称数。问该车的速度是多少?新的对称数是多少?
问题分析与算法设计:
根据题意,设所求对称数为i,其初值为95859,对其依次递增取值,将值得每一份分解后与其对称位置上的数进行比较,若每一个对称位置上的数皆相等,则可判断i即为所求的对称数。
#include <stdio.h>
int main()
{
int t;
int a[5];
long int k;
long int i;
for( i = 95860; ; i++)
{
for( t = 0, k = 100000; k >= 10; t++)
{
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;
}
}
return 0;
}
结果截图:
一辆汽车在10点时里程表显示对称数95859,两小时后变为新的对称数。通过算法设计,求解汽车速度和新的对称数。
1030

被折叠的 条评论
为什么被折叠?



