[复习]进制转换 十进制转任意进制&任意进制转十进制

十进制转任意进制
分析:十进制数 X 转 M 进制,方法是:从 X 开始循环除以 M ,记下余数,整数商作为新的 X 继续除以 M ,直到 X=0 为止。然后倒序取余数即可。
《[复习]进制转换 十进制转任意进制&任意进制转十进制》
(10 进制转 2 进制)
《[复习]进制转换 十进制转任意进制&任意进制转十进制》
(10 进制转 16 进制)

代码

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<ctime>
#include<cmath>
#include<algorithm>
#include<cctype>
#include<iomanip>
#include<queue>
#include<set>
using namespace std;

int getint()
{
    int sum=0,f=1;
    char ch;
    for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar());
    if(ch=='-')
    {
        f=-1;
        ch=getchar();
    }
    for(;isdigit(ch);ch=getchar())
        sum=(sum<<3)+(sum<<1)+ch-48;
    return sum*f;
}

int x,m,cnt;
int a[55];

int main()
{
    freopen("10toM.in","r",stdin);
    freopen("10toM.out","w",stdout);

    x=getint(),m=getint();

    while(x)
    {
        a[++cnt]=x%m;
        x=x/m;
    }

    for(int i=cnt;i>=1;--i)
    {
        if(a[i]<10) printf("%d",a[i]);
        else printf("%c",'A'+a[i]-10);//处理字母
    }
    return 0;
}

任意进制转十进制
分析:N进制转10进制的方法(以2进制转10进制为例):
《[复习]进制转换 十进制转任意进制&任意进制转十进制》

代码

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<ctime>
#include<cmath>
#include<algorithm>
#include<cctype>
#include<iomanip>
#include<queue>
#include<set>
using namespace std;

int getint()
{
    int sum=0,f=1;
    char ch;
    for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar());
    if(ch=='-')
    {
        f=-1;
        ch=getchar();
    }
    for(;isdigit(ch);ch=getchar())
        sum=(sum<<3)+(sum<<1)+ch-48;
    return sum*f;
}

int m,ans,mi,len;
int a[55];
char x[55];

int main()
{
    freopen("Mto10.in","r",stdin);
    freopen("Mto10.out","w",stdout);

    m=getint();
    scanf("%s",x+1);
    len=strlen(x+1);
    for(int i=1;i<=len;++i)//读入稍微复杂一点,因为有字母,把它们处理成数
    {
        if(x[i]>='0'&&x[i]<='9') a[i]=x[i]-'0';
        else a[i]=x[i]-'A'+10;
    }

    ans=a[len],mi=1;//0次方
    for(int i=len-1;i>=1;--i)
    {
        mi=mi*m;
        ans+=a[i]*mi;
    }

    cout<<ans;
    return 0;
}

本篇完。

    原文作者:进制转换
    原文地址: https://blog.csdn.net/g19zwk/article/details/78278200
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞