题目描述:写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )
输入描述:输入一个十六进制的数值字符串。
输出描述:输出该数值的十进制字符串。
我的解题:
# include<iostream>
# include<cmath>
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 <iostream>
using namespace std;
int main()
{
int a;
while(cin>>hex>>a){
cout<<a<<endl;
}
}
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会保持修改后的进制数