【练习题】27.2-35进制数转换为10进制数

来源:互联网 发布:c语言在线测试网站 编辑:程序博客网 时间:2024/05/20 06:53
/*输入一个2-35进制数字的字符串(字母一律大写),输出这个数值对应的十进制结果,达到进制转换目的,范围:0-0xFFFFFFFF。*/#pragma once#include <iostream>#include <string>using namespace std;//工具函数,取得字符C对应的数字int getNum(const char& c,const char* array,int length){    for (int i = 0; i < length; i++)    {        if (array[i] == c)            return i;    }    return -1;}/* *转换函数 */void changeToDidigit(const char* input,int length,int jinZhi){    char array1[35] = { '0','1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'Z'};        long result = 0;    for (int i = length-1; i >= 0; i--)    {        //取得对应的数字,这个数字就是jinZhi的幂         int num = getNum(input[i],array1,35);        if (num > jinZhi)        {            std::cout << "进制与输入数字不符合" << std::endl;            return;        }        if (num != -1)        {               int temp = pow(jinZhi, length - i-1);            //std::cout << "幂==" << temp << std::endl;            result += num*temp;        }    }    std::cout << result << std:: endl;}int main(){        std::cout << "输入字符串:";    std::string  str;    std::cin >> str;    std::cout << "输入进制:";    int jinZhi = 0;    std::cin >> jinZhi;    changeToDidigit(str.c_str(),str.size(),jinZhi);    return 0;}

运行结果:
 
图片

图片

0 0