您的位置:首页 > 其它

5——进制转换

2017-05-12 09:52 302 查看
题目描述

写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )

输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。
输入例子:
0xA

输出例子:
10


我在VS上编的程序可以运行的,但是在线编程就给我报错了,然后我也不知道怎么回事,最后我百度了一个特别牛逼的程序,后面也分享给大家

#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int char2int(char c)
{
int a=0;
if(c>='0'&&c<='9')
return c-'0';
else
{
if(c>='a'&&c<='z')
c=toupper(c);
switch (c)
{
case 'A':a=10;break;
case 'B':a=11;break;
case 'C':a=12;break;
case 'D':a=13;break;
case 'E':a=14;break;
case 'F':a=15;break;
}
return a;
}
}
long change(string s)
{
long sum=0;
int j=0;
for(unsigned int i=s.size()-1;i>1;i--)
sum+=char2int(s[i])*pow(16,j++);
return sum;
}
int main()
{
string str;
cin>>str;
cout<<change(str)<<endl;
return 0;
}</cmath></string></iostream>


以下程序为转载的网友程序:

#include<iostream>
using namespace std;
int main()
{
int num;
while(cin>>hex>>num)
cout<<num<<endl;
return 0;
}</iostream>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: