十进制进行转换

题目描述
给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
输入描述:
输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
输出描述:
为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)
示例
输入 7 2
输出 111

#include <iostream>
#include <stack>
using namespace std;

int main(){
	long int num;
	int n, i, size;
    int flag = 0;
	stack<int> src;
	char arr[6] = { 'A', 'B', 'C', 'D', 'E', 'F' };
	cin >> num;
	cin >> n;
    if (num < 0){//如果是负数,就转换为正数
        num = 0 - num;
        flag = 1;
    }
	while (num){
		src.push(num % n);
		num = num / n;
	}
	size = src.size();
    if (flag){
            cout << '-';
    }
	for (i = 0; i < size; i++){
		if (src.top() > 9){
			cout << arr[src.top() % 10];
			src.pop();
		}
		else{
			cout << src.top();
			src.pop();
		}
	}
	system("pause");
	return 0;
}

解题思路:
十进制转化N进制,就是除N取余,然后逆向输出,直到商为0时结束运算,根据此运算过程,可以定义一个栈来存放余数,计算结束时,边打印边pop。注意转换为16进制时有ABC…的出现。

发布了77 篇原创文章 · 获赞 23 · 访问量 7522

猜你喜欢

转载自blog.csdn.net/Hots3y/article/details/103047494