zoukankan      html  css  js  c++  java
  • 初级系列16.求车速问题

    求车速

    问题描述

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

    问题分析

    根据题意,司机在上午10点看到里程表上的读数是一个对称数95859,两小时后里程表上出现的新的对称数 必然大于95859,因此,假设所求对称数为i,并设为其初值为95860,即从95860开始检测,使i的取值依次 递增,对于i的每一次取值都将其进行分解,然后将对称位置上的数字进行比较,如果每个处于对称位置上的数都是相等的,则可以判断出当前的i中所存放的五位数即为里程表上新出现的对称数

    算法设计

    1> i需要从95860开始试探,因此显然需要使用循环结构,循环体中完成分解五位数并保存,再检测是否为对称数 的功能

    2> 问题中需要对一个五位数进行分解并保存,因此可以使用数组来保存分解后生成的五个数字

    #include <stdio.h>
    
    int main(void)
    {
        int t, a[5];    /* !<数组a存放分解后的五个数字*/
        long int k, i;
        /* !<以95860为初值,循环试探*/
        for (i = 95860; ; i++) {
            /* !<从高到低分解当前i中保存的五位数,并顺次存放在数组元素a[0]-a[4]中*/
            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("里程表上出现的新的对称数为 %d%d%d%d%d
    ",
                        a[0],a[1], a[2], a[3],a[4]);
                printf("该车的速度为: %.2f
    ", (i-95859) / 2.0);
                break;  /* !< 跳出循环*/
            }
        }
    }
    
    /* !<output */
        里程表上出现的新的对称数为 95959
        该车的速度为: 50.00
    
        Process returned 0 (0x0)   execution time : 0.004 s
        Press any key to continue.
    
    
    
    
    
  • 相关阅读:
    输入流输出流
    WIN32_FIND_DATA
    typeid
    为什么要内存对齐 Data alignment: Straighten up and fly right
    fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h
    memcmp
    DPI
    英寸、 Picas、 点、 跨度和 Twips 之间的关系
    如何解决 “fatal error C1083: ”无法打开包括文件
    hdoj 1269迷宫城堡解题报告
  • 原文地址:https://www.cnblogs.com/xzpin/p/11484623.html
Copyright © 2011-2022 走看看