c语言入门—数字倒序

题目
程序每次读入一个正三位数,然后输出逆序的数字。
注意,当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。

回答
分析:我们可以通过十进制的取整取余特点来分别取到个位、十位、百位的数字
百位:a/100; 对a 进行除以100 那么可以取到百位
个位:a%10;对a 进行10 的取余那么一定会取到最后一位(即个位)
十位:最最复杂的就是取十位 的数字 其实由取一头(百位)一尾(十位)可以知道 我们可以将三位数变成两位数,然后对两位数取余就可以取到十位的数字不是吗?表达式: a/10%10;
代码如下

  int main()
 {
    int a  = 100;
    printf("请输入一个三位数:\n");
    scanf("%d",&a);
    int baiwei = a / 100; //百位  
    int shiwei= (a / 10) % 10; // 十位 
    int gewei = a % 10;// 个位 
    printf("倒序后结过是:%d%d%d", gewei, shiwei, baiwei);  
    return 0;
 } 

但是运行结果会发现
结果会将100 显示成 001
那么开动你们的小脑袋就可回想起来0乘以任何数都等于0,那么利用这个 特性,我们可以把程序改成如下形式以消除开头位置上的0

  int main()
 {
    int a  = 100;
    printf("请输入一个三位数:\n");
    scanf("%d",&a);
    int baiwei = a / 100; //百位  
    int shiwei= (a / 10) % 10; // 十位 
    int gewei = a % 10;// 个位 
    /*虽然我们取到了各个位置上的数字但是我们怎么把0去掉呢??  数学中 0*任何数都等于0  利用这个这个特性可以将 前面的0 去掉 */
    printf("倒序后结过是:%d", gewei * 100 + shiwei * 10 + baiwei); 
    return 0;
 }

哈哈!收工。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值