一、题目内容:
程序每次读入一个正三位数,然后输出逆序的数字,注意当输入的数字结尾含有0时,输出不应前导为0。
输入:123 输出:321
输入:200 输出:2
提示:用%10可以得到个位数,用/100可以得到百位数。
二、算法思路:
首先,计算机其实很笨,它需要你给它下达详细的指令去执行相关的操作,而这个解决问题的具体过程其实就可以叫做算法。首先分析问题。(以下i为输入的正三位数)
要想它逆序,我们得知道每个位上是啥数。
(1)个位与百位
%是取余运算,就可以得到个位数,/在两个操作数都是整数的情况下,它会舍弃余数,这样我们可以得到百位数。
个位:i%10,百位:i/100
(2)十位
这个题的第一个难点其实是如何取中间的数,其实也不太难,在前面我们已经得知了取头和尾的办法,那要是我们把中间的数转化为头和尾呢?也就是降低位数,那不就和前面的办法一样了吗?
为头:i%100/10
为尾:i/10%10
(3)输出
取数的问题我们解决了,接下来就是要求的输出格式问题了,这里不是单纯的把数提取出来然后逆序就可以的,而是要注意输入数结尾为0的情况,我们要忽略最后逆序出来前面的0,所以就不能直接读取我们取出来的数,而是以个位数*100+十位数*10+百位数进行拼凑起来。
三、具体代码
#include <stdio.h>
int main()
{
int st,nd,rd;
int i;
scanf("%d",&i);
st=i/100;
nd=i/10%10;
rd=i%10;
printf("%d",st+nd*10+rd*100);
return 0;
}
四、思考
1、首先是学习计算机语言其实难的不是那些代码,而是思维和逻辑,计算机语言在我看来他们只是一个一个工具,当你需要他们干啥的时候他们会遵照你的指示行动,如果你的逻辑是错的,那他们也会跟着错。
2、这是一道解决三位正数的逆序题,那如果是很多位呢?那可能需要进行多次的降位运算,然后需要许多的变量来存储这些数,那太麻烦了,也许在后面的学习过程中有更加优化的办法。