实现数字逆序的方法

  很多时候需要实现数字逆序,比如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;
    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值