BUAA_6:三位数反转-分离整数的各个数位

  • 题目描述

输入一个三位数,分离出它的百位,十位,个位,翻转后输出。

  • 输入

多组测试数据,每组输入一个x(100≤x≤999)。

  • 输出

每组测试数据输出一行,为反转后的数字。

  • 输入样例

127
742
640

  • 输出样例

721
247
46

AC代码:

/*
 Author: Forlogen
 Result: AC    Submission_id: 519785
 Created at: Wed Jan 17 2018 20:15:14 GMT+0800 (CST)
 Problem_id: 6    Time: 1    Memory: 2680
*/
#include 
#include 
using namespace std;
int main()
{
    int n;
    int a,b,c;
    while(scanf("%d",&n)!=EOF){
        a=n/100%10;
        b=n/10%10;
        c=n/1%10;
        int num=c*100+b*10+a;
        printf("%d\n",num);
    }
    return 0;
}
/*
127
742
640
*/

今天在刷OJ题目:三位数的反转题目时,想到如何获得一个数的各位呢?三位的数很简单

        百位=n/100%10;
        十位=n/10%10;
        个位=n/1%10;

那么对于任意一个数,思考如何分离各位,有一个公式,通过多次实验就能发现,每次用a%(10的i次方)/(10的i-1次方)这样就能得到各位,是从最低位开始分离的

代码

#include 
using namespace std;
int p_pow(int temp){   //计算10的temp次方
    int sum=1;
    for(int i=0;i10;
    }
    return sum;
}
int EveryNumber(int a){  //分离a的各位并打印
    int num[100];
    for(int i=1;i<100;i++){
        num[i]=(a%(p_pow(i)))/p_pow(i-1);//分离公式
        if(p_pow(i)>a) break; //结束标志
    }
    for(int j=i;j>=1;j--) 
        cout<return 0;
}
void main()
{
    int n;
    cin>>n;
    EveryNumber(n);
}

上述代码来自 http://blog.csdn.net/qq_23100787/article/details/48449961

你可能感兴趣的:(OJ)