目录
题目描述
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
输入描述
输入一个十六进制的数值字符串。注意:一个用例会同时有多组输入数据,请参考帖子https://www.nowcoder.com/discuss/276处理多组输入的问题。
输出描述
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
示例1
输入
0xA
0xAA
输出
10
170
做题思路
第一种:其他进制转十进制的方法很简单,就是不停的乘加
第二种:利用cin和cout本身的进制输入输出(详情见笔记)
AC代码
思路1:
#include<iostream>
#include<cmath>
using namespace std;
int main(){
string str;
while( getline(cin, str) ){
int num = 0;
for(int i=str.length()-1,j=0; i>1; i--, j++){
if(str[i]>='A'&&str[i]<='F'){
num += (str[i]-'A'+10)*pow(16, j);
}else{
num += (str[i]-'0')*pow(16, j);
}
}
cout << num <<endl;
}
return 0;
}
思路2:
#include<iostream>
using namespace std;
int main(){
int num;
while( cin>> hex >> num ){
cout << dec << num <<endl;
}
return 0;
}