zoukankan      html  css  js  c++  java
  • 进制转换

    题目描述
    乐乐正在学进制转换,但他老是搞不清楚到底自己是否做对,请你编一程序实现两种不同进制之间的数据转换,帮他检验。

    输入
    共有三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10则用大写字母A~F表示数码10~15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)。

    输出
    仅一行,包含一个正整数,表示转换之后的m进制数。

    样例输入
    复制样例数据
    16
    FF
    2
    样例输出
    11111111

    #include <iostream>
    #include <bits/stdc++.h>
    using namespace std;
    int k(int n,int y)
    {
        int i=0,kk=1;
        for(i=0;i<y;i++)
        {
            kk=kk*n;
        }
        return kk;
    }
    int fun(char a[],int n,int len)
    {
        int i,x,s=0,y=0;
        for(i=len-1;i>=0;i--)
        {
            if(a[i]>='A'&&a[i]<='F')
            {
                x=a[i]-'A'+10;
            }
            else
            {
                x=a[i]-'0';
            }
            int kk=k(n,y);
            s=s+x*kk;
            y++;
        }
        return s;
    }
    void fun1(int s,int m)
    {
        int i,t,x=0;
        char a[100];
        while(s>0)
        {
           t=s%m;
           s/=m;
           if(t==1)
           {
               a[x++]='1';
           }
           else if(t==0)
            a[x++]='0';
           else if(t==2)
            a[x++]='2';
           else if(t==3)
            a[x++]='3';
            else if(t==4)
            a[x++]='4';
            else if(t==5)
            a[x++]='5';
            else if(t==6)
            a[x++]='6';
            else if(t==7)
            a[x++]='7';
            else if(t==8)
            a[x++]='8';
            else if(t==9)
            a[x++]='9';
           else if(t==10)
           {
               a[x++]='A';
           }
           else if(t==11)
           {
               a[x++]='B';
           }
           else if(t==12)
           {
               a[x++]='C';
           }
           else if(t==13)
           {
               a[x++]='D';
           }
           else if(t==14)
           {
               a[x++]='E';
           }
           else if(t==15)
           {
               a[x++]='F';
           }
    
        }
        for(i=x-1;i>=0;i--)
        {
            printf("%c",a[i]);
        }
        printf("
    ");
    }
    int main()
    {
        int n,m;
        char a[200];
        scanf("%d %s %d",&n,a,&m);
        int len=strlen(a);
        int s=fun(a,n,len);
        fun1(s,m);
        return 0;
    }
    
    

    不要用pow函数,double型有误差

  • 相关阅读:
    SQL Server 和Oracle 12C体系结构图
    SQL Server Latch
    MSSQL SSIS agent job运行出错
    sys.processes spid 和 blocked是同一个 session id
    黑苹果导致Windows时间不对或关机不断电
    MSSQL shrink数据库
    MSSQL 死锁或阻塞检测
    MSSQL不能shrink日志
    tomcat配置https协议
    ELK windows下部署测试
  • 原文地址:https://www.cnblogs.com/skyleafcoder/p/12319585.html
Copyright © 2011-2022 走看看