您的位置:首页 > 编程语言

华为研发工程师编程题----进制转换(pow函数,string.find())

2016-07-09 20:04 344 查看
[编程题] 进制转换

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

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

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

输入例子:
0xA


输出例子:
10


#include <iostream>
#include <string>
#include <math.h>
using namespace::std ;

int main() {
string input ;
string index = "0123456789ABCDEF" ;

while ( cin >> input ) {
input = input.substr( 2 ) ;
double base = input.size() - 1 ;
double sum = 0.0 ;
for ( int i = 0; i < input.size(); ++ i ) {
int tmp = index.find( input[i] ) ;
sum += tmp * pow( (double)16, base ) ;
-- base ;
}
cout << sum << endl ;
}
return 0 ;
}


第二次做:

#include <string>
#include <iostream>
#include <algorithm>

using namespace::std ;

int main() {
static string index = "0123456789ABCDEF" ;
string input ;

while ( cin >> input ) {
input = input.substr( 2 ) ;
double base = input.size() - 1 ;
double result = 0.0 ;
for ( int i = 0; i < input.size(); ++ i ) {
int tmp = index.find( input[i] ) ;
result += tmp * pow( (double)16, base ) ;
-- base ;
}

cout << result << endl ;
}

return 0 ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: