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

    总体思路:当要求十进制x的k进制表示时,我们只需要不断重复地把x对k求余,再除以k,即可得到由低到高的各个位数上的数

                       当要求得由k进制表示得数字得十进制时,我们需要依次计算各个数位上的数字与该位权重的积(第n位的权重为k^(n-1)),

                       然后将它们依次累加即可得到该十进制值

    题目描述

        求任意两个不同进制非负整数的转换(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)。
    示例1

    输入

    15 Aab3 7
    

    输出

    210306
     1 #include<stdio.h>
     2 #include<string.h>
     3 
     4 int main()
     5 {
     6     int a,b,c;
     7     char str[40],ans[40];
     8     int i;
     9     int temp,len,index;
    10     int x;
    11 
    12     while( scanf("%d%s%d",&a,str,&b)!=EOF)
    13     {
    14         len = strlen(str);
    15         temp = 0;  //表示十进制数,初始化为0
    16         index = 0;  //表示目标数组中的位置
    17         for( i=0; i<len; i++)
    18         {
    19             //注意这里是从后往前循环
    20             if( str[i]>='0' && str[i]<='9')
    21                 x = str[i] - '0';
    22             else if( str[i]>='a' && str[i]<='z')
    23                 x = str[i] - 'a' + 10;
    24             else if( str[i]>='A' && str[i]<='Z')
    25                 x = str[i] - 'A' + 10;
    26             temp = temp*a +x;
    27         }
    28         do
    29         {
    30             //即使转换数值为0也会执行一遍
    31             x = temp%b;
    32             if( x<10 )  ans[index++] = x + '0';
    33             else ans[index++] = x-10 + 'A';
    34             temp/=b;
    35         }
    36         while( temp);
    37         for( i=index-1; i>=0; i--)
    38         {
    39             //输出时顺序从高位到低位
    40             printf("%c",ans[i]);
    41         }
    42         printf("
    ");
    43     }
    44     return 0;
    45 }
    在这个国度中,必须不停地奔跑,才能使你保持在原地。如果想要寻求突破,就要以两倍现在速度奔跑!
  • 相关阅读:
    Object-C支持多继承吗?可以实现多个接口吗?Category是什么?
    Action类为何要继承ActionSupport
    JAVA中的File类
    Oracle中奇怪的【不等于号】
    Oracle中INSTR、SUBSTR和NVL的用法
    【ERROR】Oracle11g两个监听同名进程的故障
    【ERROR】EXP-00091
    【ERROR】while loading shared libraries: /u01/app/oracle/product/11.2.0/lib/libclntsh.so.11.1: cannot
    【js】appendChild
    【js】正则表达式(II)
  • 原文地址:https://www.cnblogs.com/yuxiaoba/p/8438408.html
Copyright © 2011-2022 走看看