zoukankan      html  css  js  c++  java
  • 九度OJ 1118 数制转换

    题目地址:http://ac.jobdu.com/problem.php?pid=1118

    题目描述:

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

    可以用字符串表示不同进制的整数。

    #include <stdio.h>
     
    int main(void){
        char str[100];
        long long data;
        long long tmp;
        int a, b;
        int i;
     
        while (scanf ("%d %s %d", &a, str, &b) != EOF){
            data = 0;
            for (i=0; str[i]; ++i){
                if (str[i] >= 'a')
                    str[i] -= 32;
                tmp = (str[i] <= '9' && str[i] >= '0') ? str[i] - '0' : str[i] - 'A' + 10;
                data = data * a + tmp;
            }
            if (data == 0){
                puts ("0");
                continue;
            }
            i = 0;
            while (data != 0){
                tmp = data % b;
                str[i] = (tmp >= 10) ? tmp - 10 + 'A' : tmp + '0';
                ++i;
                data /= b;
            }
            --i;
            while (i >= 0){
                putchar (str[i]);
                --i;
            }
            putchar ('
    ');
        }
     
        return 0;
    }
    
  • 相关阅读:
    DS博客作业03--栈和队列
    DS博客作业02--线性表
    DS博客作业01--日期抽象数据类型设计与实现
    C语言博客作业06--结构体&文件
    DS博客作业08--课程总结
    DS博客作业07--查找
    DS博客作业06--图
    DS博客作业05--树
    DS博客大作业--树 (陈梓灿组)
    DS博客作业03--栈和队列
  • 原文地址:https://www.cnblogs.com/liushaobo/p/4373818.html
Copyright © 2011-2022 走看看