题目要求: 将三个十进制数分别转换成八进制数,建议使用栈来实现。
输入描述 输入三个十进制数,每个占一行。 输出描述 输出每个十进制数所对应的八进制数,每个占一行。 输入样例 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;
}
毕。