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

来源:互联网 发布:百度小号批发淘宝 编辑:程序博客网 时间:2024/06/01 09:09

  基础练习 十六进制转十进制  
时间限制: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;}



1 0
原创粉丝点击