C语言每日一练——第84天:求车速

C语言每日一练
2022年3月2日

题目描述

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

问题分析

这里的对称数也称回文数,在C语言每日一练——第6天:回文数里已经遇到过,所以我直接使用第6天的函数(判断一个整数是否为回文数)。

求出95859下一个回文数,再将该回文数与95859的差除以2就能得出该车的车速。

代码实现

#include <stdio.h>

/**
 * @brief 判断是否为回文数
 * @return 1:是回文数;0:不是回文数
 */
int is_palindrome_number(int num)
{
    
    
    int old_val = num;  //传入的数字
    int new_val = 0;    //颠倒后的数字
    while(num)          //当前num的位数大于1(值大于9)
    {
    
    
        //将new_val乘以10,然后加上num的个位数,
        //使个位数从原来的后第n位变成前第n位
        new_val = new_val * 10 + num % 10;
        num /= 10; //num除以10,将个位数去掉
    }
    if(new_val == old_val) //如果反转后的数字和原数字相同
        return 1;
    else return 0;
}


int main()
{
    
    
    int i = 0;
    float speed = 0.0f;
    for(i = 95859 + 1; ;i++)
    {
    
    
        if(is_palindrome_number(i))
        {
    
    
            printf("新的对称数为%d\n", i);
            break;
        }
    }
    speed = (i - 95859) / 2.0f;
    printf("该车的速度是%.1f公里/小时\n", speed);
    return 0;
}

运行结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43772810/article/details/123235227
今日推荐