首页 > 学院 > 开发设计 > 正文

蓝桥杯- 基础练习 十六进制转十进制

2019-11-08 02:48:56
字体:
来源:转载
供稿:网友

  基础练习 十六进制转十进制  时间限制:1.0s   内存限制:512.0MB      问题描述  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。样例输入FFFF样例输出65535

得分:75,未完全正确请大家指正

#include<iostream>#include<string>#include <math.h>using namespace std;int main(){    string num2,num16;    int i,len,num=0;    //16进制转换成二进制(字符串)    num2=num16="";    cin>>num16;    len=num16.length();    for(i=0; i<len; i++)    {        switch(num16[i])        {        case '0':            num2+="0000";            break;        case '1':            num2+="0001";            break;        case '2':            num2+="0010";            break;        case '3':            num2+="0011";            break;        case '4':            num2+="0100";            break;        case '5':            num2+="0101";            break;        case '6':            num2+="0110";            break;        case '7':            num2+="0111";            break;        case '8':            num2+="1000";            break;        case '9':            num2+="1001";            break;        case 'A':            num2+="1010";            break;        case 'B':            num2+="1011";            break;        case 'C':            num2+="1100";            break;        case 'D':            num2+="1101";            break;        case 'E':            num2+="1110";            break;        case 'F':            num2+="1111";            break;        case 'a':            num2+="1010";            break;        case 'b':            num2+="1011";            break;        case 'c':            num2+="1100";            break;        case 'd':            num2+="1101";            break;        case 'e':            num2+="1110";            break;        case 'f':            num2+="1111";            break;        default:            break;        }    }    // cout<<num2<<endl;//输出二进制数    //二进制转换成十进制    len=num2.length();    //cout<<len<<endl;    for(i=0; i<len; i=i+1)    {        //cout<<num2[i]<<" "<<num2[i+1]<<" "<<num2[i+2]<<endl;        if(num2[i]=='1')            num=num+pow(2,len-i-1);//程序要引用math.h文件,使用时pow(x,y)表示x的y次方。        //cout<<num<<endl;    }    cout<<num<<endl;    return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表