题目描述

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。

方法1:

优秀,又学习到了,太简洁了

    int s;//注意是int
    while(cin>>hex>>s){
        cout<<s<<endl;
    }

补充:
hex是16进制,oct是8进制,dec是10进制
反向同样成立:cout<<hex<<170; 输出aa

方法2:

中规中矩

#include<iostream>
using namespace std;
int str2num(char c){ //单另函数,字符转换成对应的数字
    if(c>='A'&&c<='F')//注意0-9和A-F的ascii不是连着的 要分开写
        return c-'A'+10;
    else if(c>='0'&&c<='9')
        return c-'0';
    else
        return 0;
}
int main(){
    string s;
    while(cin>>s){
        int ans=0,k=1;
        for(int i=s.length()-1;i>=2;i--){
            ans+=str2num(s[i])*k;
            k*=16;
        }
        cout<<ans<<endl;
    }
    return 0;
}