牛客网华为机试在线训练——进制转换

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

我的解题:

# include
# include

using namespace std;

int main()
{
    string input;
    while( getline(cin, input) )
    {
        int res = 0;
        int k = 0;
        for( int i=input.length()-1;i>1;i-- )
        {
            int temp = 0;
            if( input[i] >= 'A' && input[i] <= 'F')
                temp = input[i]-'A'+10;
            else
                temp = input[i]-'0';
            res += temp*pow(16,k);
            k++;
        }
        cout << res << endl;
    }
    
    return 0;
}

别人解法:

#include 
using namespace std;

int main()
{
    int a;
    while(cin>>hex>>a){
    cout<

cin、cout 默认进制:
默认状态下,数据按十进制输入输出。如果要求按八进制或十六进制输入输出,在cin或cout中必须指明相应的数据形式,oct为八进制,hex为十六进制,dec为十进制。

int i, j, k, l;

cin >> oct >> i; //输入为八进制数
cin >> hex >> j; //输入为十六进制数
cin >> k; //NOTE:输入仍为十六进制数
cin >> dec >> l; //输入为十进制数

cout << hex << i << endl;//输出为十六进制数
cout << oct << l << endl;//输出为八进制数
cout << j << endl; //NOTE:输出仍为八进制数
cout << dec << endl; //恢复十进制输出状态

NOTE:将cin或者cout的进制数修改后,后面的cin/cout会保持修改后的进制数

你可能感兴趣的:(牛客网华为机试在线训练——进制转换)