求车速

问题描述:

一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859。两小时后里程表上出现了一个新的对称数,该数仍为五位数。问该车的速度是多少?新的对称数是多少?

问题分析:

对称数是95859,两小时后出现新的,这个数肯定比95859要打,假设这个数为i,i>95859,然后我们把i这个五位数拆分,把第一位和第五位比较,第二位与第四位比较,如果相同,就是我们要找的数。

程序框架:

1.肯定要用到for循环,i从95859开始增加,一次次试i的值,也就是这样

for (int i = 95860;; i++)

2.把i分解,然后存入数组中,创建一个数组a[5],a[0]放万位上的数,a[1]放千位上的数............

for (t = 0, k = 100000; k >= 10; t++)
        {
            a[t] = (i % k) / (k / 10);
            k /= 10;//k依次减小
        }

 

3.然后就该判断了,判断第一位和第五位,第二位和第四位

if (a[0] == a[4] && a[1] == a[3])

4.判断完,我们输出这个数

for (int s = 0; s < 5; s++)
            {
                cout << a[s] << "  ";
            }//我这个后面有空格,输出的是五个数字,连起来就是对称数

5.完整代码

#include<iostream>
using namespace std;
int main()
{
    int a[5];
    int t;
    long int k;
    for (int i = 95860;; i++)
    {
        for (t = 0, k = 100000; k >= 10; t++)
        {
            a[t] = (i % k) / (k / 10);//把每个位置上的数存入数组中
            k /= 10;//k变为原来的十分之一,可以依次求出万位,千位,百位,十位,个位的数字
        }
        if (a[0] == a[4] && a[1] == a[3])//判断是不是对称数
        {
            for (int s = 0; s < 5; s++)//for循环,输出结果
            {
                cout << a[s] << "  ";
            }
            cout << ((i - 95859) / 2) << endl;//求车速
            break;//找到结果后跳出循环
        }
    }
    return 0;
}

 

posted @ 2023-04-26 20:58  酥饼馅红豆沙  阅读(58)  评论(0编辑  收藏  举报