基础练习 十六进制转十进制
时间限制:1.0s 内存限制:512.0MB
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
无语。。。现在也没明白这样为什么不对
1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 6 long long mul(int n)//要用long long类型 7 { 8 long long s=1; 9 for(int i=1;i<=n;i++) 10 s*=16; 11 return s; 12 } 13 14 int main() 15 { 16 long long a=0; 17 char str[9]; 18 cin>>str; 19 for(int i=0;i<strlen(str);++i) 20 { 21 int temp; 22 if(str[i]>='0'&&str[i]<='9') 23 temp=str[i]-'0'; 24 else 25 temp=str[i]-55; 26 a+=(temp*mul(i)); 27 } 28 cout<<a; 29 return 0; 30 }
这样就对了
1 #include <iostream> 2 #include <string> 3 #include <algorithm> 4 using namespace std; 5 6 long long mul(int n)//要用long long类型 7 { 8 long long s=1; 9 for(int i=1;i<=n;i++) 10 s*=16; 11 return s; 12 } 13 14 int main() 15 { 16 long long a=0; 17 string str; 18 cin>>str; 19 reverse(str.begin(),str.end()); 20 for(int i=0;i<str.length();++i) 21 { 22 int temp; 23 if(str[i]>='0'&&str[i]<='9') 24 temp=str[i]-'0'; 25 else 26 temp=str[i]-55; 27 a+=(temp*mul(i)); 28 } 29 cout<<a; 30 return 0; 31 }