题目描述:
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
输入描述:
输入一个十六进制的数值字符串。注意:一个用例会同时有多组输入数据。
输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
示例:
输入:
0xA 0xAA
输出:
10 170
解题思路:
取巧的办法直接以cin和cout自带的功能,16进制读取,10进制输出;硬解的话,就是用十进制和十六进制的转换关系式做了。
测试代码:
#include <iostream> #include <string> using namespace std; int main() { int input; // cin>>hex输入的是16进制的,输出为10进制的,直接搞定 while(cin>>hex>>input) { cout<<input<<endl; } return 0; }
硬解的做法
#include<iostream> #include<string> #include<cmath> using namespace std; int main() { string s; while(cin>>s) { int bit=0; int ans =0; for(int i=s.length()-1;i>1;i--) { if(s[i]>='0'&&s[i]<='9') ans+=(s[i]-'0')*pow(16,bit++); else if(s[i]>='A'&&s[i]<='F') ans+=(s[i]-'A'+10)*pow(16,bit++); } cout<<ans<<endl; } return 0; }