#include <stdio.h> #include <stdlib.h> int main(void) { int num,sum=0; int i=0,j,k; int m; int str[10]; scanf("%d", &num); while(num>0) { str[i]=num%10; num=num/10; i++; } for(j=0;j<i;j++) { m=1; for(k=1;k<=j;k++) { m*=9; } if(str[j]<=3) sum+=str[j]*m; if(str[j]>=5)//以4隔开 sum+=(str[j]-1)*m; } printf("%d\n", sum); return 0; }
(转载)思路:本题若在数据小的话可用普通循环逐次检验即可,重要之处在于判断里程表的位数,1,2,3位的计算公式不同;在数据大的情况下可用九进制,逐位*9,以4为界限来累加。
有问题的里程表
最新推荐文章于 2024-04-11 08:26:17 发布
本文介绍了一个关于里程表数字转换的问题解决方案,通过使用九进制计数方法,并结合特定条件下的数值调整,实现了对输入数字的有效转换。代码采用C语言实现,通过循环和条件判断完成对每位数字的处理。

1884

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



