zoukankan      html  css  js  c++  java
  • 数制转换(王道)

    题目描述:  

        求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。  

        不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。  

    输入:  

        输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。  

        数据可能存在包含前导零的情况。  

    输出:  

        可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,...,9,A,B,...,F)。  

    样例输入:  

    15 Aab3 7  

    样例输出:  

    210306 

     1 #include <iostream>
     2 #include<string.h>
     3 using namespace std;
     4 
     5 int main()
     6 {
     7     int a,b;
     8     char str[40];
     9     memset(str,0,sizeof(str));
    10     while(scanf("%d%s%d",&a,str,&b)!=EOF){
    11         int len=strlen(str);
    12         int temp=0;
    13         int c=1;
    14         for(int i=len-1;i>=0;i--){//转换成十进制
    15             int x;
    16             if(str[i]<='9'&&str[i]>='0'){
    17                 x=str[i]-'0';
    18             }
    19             else if(str[i]>='a' && str[i]<='f'){
    20                 x=str[i]-'a'+10;
    21             }
    22             else if(str[i]>='A' && str[i]<='F'){
    23                 x=str[i]-'A'+10;
    24             }
    25             temp+=x*c;//累加该位数字和数位权重的积
    26             c*=a;//计算下一位数位权重
    27         }
    28         char ans[40];
    29         memset(ans,0,sizeof(ans));
    30         int size=0;
    31         while(temp){
    32             int x=temp%b;//计算该位数字
    33             char x0;
    34             if(x<10)//转换成字符
    35                 x0=x+'0';
    36             else
    37                 x0=x+'a'-10;
    38             ans[size++]=x0;
    39             temp/=b;
    40         }
    41         for(int i=size-1;i>=0;i--){
    42             printf("%c",ans[i]);
    43         }
    44         printf("
    ");
    45     }
    46     return 0;
    47 }

    P.S.这个题实际上很简单,我做的一直报错的原因主要是因为很多初始化都没写。像里面的size,temp,c等都是应该初始化的,如果没有初始化是做不出来的。

  • 相关阅读:
    【BZOJ 1007】【HNOI 2008】水平可见直线 解析几何
    【POJ 2653】Pick-up sticks 判断线段相交
    【NOIP 2004】虫食算
    【TYVJ 1463】智商问题 (闲得无聊)
    【BZOJ 2599】【IOI 2011】Race 点分治
    【BZOJ 3050】【USACO2013 Jan】Seating 线段树
    【BZOJ 3048】【USACO2013 Jan】Cow Lineup 滑块思想
    【BZOJ 1758】【WC 2010】重建计划 分数规划+点分治+单调队列
    【BZOJ 3049】【USACO2013 Jan】Island Travels BFS+状压DP
    【BZOJ 1468】Tree 点分治
  • 原文地址:https://www.cnblogs.com/xym4869/p/8643417.html
Copyright © 2011-2022 走看看