实现数字逆序的方法

来源:互联网 发布:网络叫表妹是什么意思 编辑:程序博客网 时间:2024/05/22 14:32

  很多时候需要实现数字逆序,比如456逆序之后为654,依此类推。

首先考虑十进制的情况,想到读入一个数时,对10取余数,然后除10,逐渐输出,需要考虑的是负数时需要通过一个负号变为正数,即

#include<stdio.h>void main(){ int n; scanf("%d",&n);if(n<0){n=-n;}while(n>0){    printf("%d",n%10);     n/=10;}printf("%d");}
非十进制可以考虑将10换为n即可。但是这种一般适用于直接输出的情况,而实际有时需要储存,于是变成这样:
int inverse(int n){    int i=0,j=0,b[10],sum=0,c,x;    while(n>0)    {        x=n%10;        i++;++j;        b[i]=x;        n=n/10;    }    j-=1;    for(int k=1;k<=i;k++,j--)    {    c=b[k]*pow(10,j);    sum+=c;    }    return sum;}
i用来标记位数,j用来还原数字,但是这样明显不如通过字符串string类型进行操作,如:
    int n,b[110],c[110];    string a;    cin>>n;    scanf("%s",a);    for(int i=strlen(a)-1;i>=0;i--)    {        if(n==16)        {            if(a[i]>='0'&&a[i]<='9'){b[strlen(a)-i-1]=a[i]-48;c[i]=a[i]-48;}            if(a[i]>='A'&&a[i]<='Z'){b[strlen(a)-i-1]=a[i]-55;c[i]=a[i]-55;}        }        else {b[strlen(a)-i-1]=a[i]-48;c[i]=a[i]-48;}    }
或者也可以:
int n,h;string m;cin>>n>>m;    h=m.length();    for(int i=1;i<=h;i++)    {        int o=m[i-1]-'0';        if(o<=9)a[i]=o;        else a[i]=o-7;    }



原创粉丝点击