华为机试-进制转换(中等)
进制转换
http://www.nowcoder.com/questionTerminal/8f3df50d2b9043208c5eed283d1d4da6
题目描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
方法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;
}