[编程题] 进制转换

来源:互联网 发布:sift特征python 编辑:程序博客网 时间:2024/06/06 12:48

写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。

输入描述:

输入一个十六进制的数值字符串。

输出描述:

输出该数值的十进制字符串。

输入例子:

0xA

输出例子:

10

代码:

#include <iostream>#include <string>using namespace std;int main(){    char flag[2];    string input;    int value = 0;    while (cin>>input)    {        unsigned int len = input.length(), k = 0;        for (int i = 0; i < 2; ++i)            flag[i] = input[i];        if (flag[0] == '0'&&flag[1] == 'x'&&len>2)        {            if (input[2] >= 'A'&&input[2] <= 'F')                value += input[2] - 'A' + 10;            else if (input[2] >= '0'&&input[2] <= '9')                value += input[2] - '0';            else                return -1;            for (int i = 3; i < len; ++i)            {                if (input[i] >= 'A'&&input[i] <= 'F')                    value = value * 16 + input[i] - 'A'+10;                else if (input[i] >= '0'&&input[i] <= '9')                    value = value * 16 + input[i] - '0';            }        }        else            continue;        while (value)        {            input[k]= value % 10 + '0';            value /= 10;            ++k;        }        char *p;        p = new char[k - 1];        for (int i = 0; i < k; ++i)            p[i] = input[k - i - 1];        cout << p << endl;    }    return 0;}
1 0
原创粉丝点击