初级系列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\n",
a[0],a[1], a[2], a[3],a[4]);
printf("该车的速度为: %.2f\n", (i-95859) / 2.0);
break; /* !< 跳出循环*/
}
}
}
/* !<output */
里程表上出现的新的对称数为 95959
该车的速度为: 50.00
Process returned 0 (0x0) execution time : 0.004 s
Press any key to continue.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!