W3 school 菜鸟教程 我要自学网 信息学奥赛NOI 花哥的博客 不逼自己一把,怎知自己有多优秀——校长语录

1031:反向输出一个三位数

1031:反向输出一个三位数


时间限制: 1000 ms         内存限制: 65536 KB
提交数: 44480     通过数: 26787 

【题目描述】

将一个三位数反向输出,例如输入358,反向输出853。

【输入】

一个三位数n。

【输出】

反向输出n。

【输入样例】

100

【输出样例】

001

 

【分析】

这个问题的难点:1、如何取出各个数位上的数字。对于一个三位数,取个位数简单,除以10取余就可以。百位是最高位,可以用n/100(这是整数除法,得到的自然是个整数)。十位数字的解决办法可以考虑去掉最后一位,那十位就变个位了,那就简单了。当然也可以去掉百位再用刚才找百位的方法找到十位数了。(这里包含了一种重要的数学思想方法哟--化归)

2、要倒序输出,先输出个位数,然后十位数,最后是百位数。解决顺序问题一个很简单的方法:先用三个变量保存三个数字,顺序就变得简单了,不是吗?!

【解决方案】

根据以上分析,找出一个解决方案不难了。但比较好的方案是:先取个位,然后去年个位成一个两位数,再取个位(这时的个位相当于原来的十位),再去掉个位,得到一个一位数,那这个数就相当于原来的百位数了。这个方法的优势在于按这个方法,四位数、五位数、...、更多位数都可以解决了。

【代码展示】

#include<iostream>
using namespace std;
int main(){
    int a,bw,sw,gw;
    cin>>a;
    bw=a/100;//百位数字
    gw=a%10;//个位数字
    a=a/10;//把a的个位去掉,得到只有百位数字和十位数字的两位数。十位数字现在在个位了哟
    sw=a%10;//十位数字
    cout<<gw<<sw<<bw<<endl; 
    return 0;
}
方案一:去个位找十位
#include<iostream>
using namespace std;
int main(){
    int a,bw,sw,gw;
    cin>>a;
    bw=a/100;//百位数字
    gw=a%10;//个位数字
    a=a%100;//把a的百位去掉,得到一个两位数,十位是最高位了 
    sw=a/10;//十位数字
    cout<<gw<<sw<<bw<<endl; 
    return 0;
}
方案二:去百位找十位
#include<iostream>
using namespace std;
int main(){
    int a,bw,sw,gw;
    cin>>a;
    gw=a%10;//个位数字
    a=a/10;//个位己取出,去掉个位,让十位成为新的个位 
    sw=a%10;//十位数字
    bw=a/10;//再去掉新的个位,让原来百位成为新的个位,那这个数当然就是百位了     
    cout<<gw<<sw<<bw<<endl; 
    return 0;
}
方案三:取个位,其他重复操作(去个位再取个位)
#include<iostream>
using namespace std;
int main(){//此程序不只适用于三位数,int范围内的数均可 
    int a,bw,sw,gw;
    cin>>a;
    while(a)
    {cout<<a%10;
        a/=10;}    
    return 0;
}
方案四:方案三用循环实现

 



posted @ 2020-03-24 11:04  耍人  阅读(2047)  评论(1编辑  收藏  举报