c语言练习题—逆序的三位数

一、题目内容: 

程序每次读入一个正三位数,然后输出逆序的数字,注意当输入的数字结尾含有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、这是一道解决三位正数的逆序题,那如果是很多位呢?那可能需要进行多次的降位运算,然后需要许多的变量来存储这些数,那太麻烦了,也许在后面的学习过程中有更加优化的办法。

 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值