[蓝蓝计算机考研算法]-day27进制转换

111 阅读1分钟

题目描述

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。

数据范围: 1<=n<= 2^31-1

输入描述

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

输出描述

输出该数值的十进制字符串。不同组的测试用例用\n隔开。

示例

输入:AF3
输出:2803

思路

十六进制转十进制:从高位开始,每位乘以16的n-1次方,再相加,即可得出十进制数。(n为十六进制数的位数)

具体实现

#include<bits/stdc++.h>
using namespace std;
int main(){
	string s; //存放十六进制数 
	int ans; //保存转换后的十进制数 
	while(cin>>s){
		int ls = s.size();
		ans = 0;
		for(int i=0; i<ls; i++){ //从第一个字符开始遍历(最右边的) 
			ans = ans*16;
			if(s[i]>='0' && s[i]<='9')
				ans =ans + (s[i]-'0');
			else //从10开始往后就为字母A~F 
				ans = ans + (s[i]-'A') + 10;
		}
		cout<<ans<<endl; 
	}
	return 0;
}

小结

进制转换总结 这里总结了常见的进制转换的核心代码,注意及时回顾。只要知道原理,就不难写代码。熟能生巧。