OJ刷题记录:将十进制数转换成八进制数 题目编号:545

将十进制数转换成八进制数 题目编号:545

题目要求:
将三个十进制数分别转换成八进制数,建议使用栈来实现。

输入描述
输入三个十进制数,每个占一行。
输出描述
输出每个十进制数所对应的八进制数,每个占一行。
输入样例
256
189
15
输出样例
400
275
17

解题思路:
一个十进制整数转换为八进制表示的数时,可按除 8 取余的方法进行。高进制转换为低进制时先取得的余数为低位数,而进制转换时我们需要从高位到低位,所以我们将所得余数依次压入栈,因为栈先进后出,输出时即可实现从高位到低位的结果输出。

通关代码:

#include <iostream> 

#define LENGTH 10

using namespace std;

class Stack {
    
    
	public:
		Stack():top_(-1) {
    
    }
		
	public:
		void Push(int val);
		void Pop();
		void Print();
		
	private:
		int list_[LENGTH];
		int top_;
};

void Stack::Push(int val) {
    
    
	top_++;
	list_[top_] = val;
}

void Stack::Pop() {
    
    
	top_--;
}

void Stack::Print() {
    
    
	while (top_ != -1) {
    
    
		cout << list_[top_];
		top_--;
	}
	cout << endl;
}

void printOctal(int decimal) {
    
    
	Stack res;
	
	while (decimal != 0) {
    
    
		res.Push(decimal % 8);
		decimal = decimal / 8;
	}
	
	res.Print();
}

int main() {
    
    
	int a, b, c;
	
	cin >> a >> b >> c;
	
	printOctal(a);
	printOctal(b);
	printOctal(c);
	
	return 0;
}

毕。

猜你喜欢

转载自blog.csdn.net/weixin_45711556/article/details/108689452