题目:
问题 B: 算法3-1:八进制数
时间限制: 1 Sec 内存限制: 32 MB
提交: 923 解决: 527
[提交][状态][讨论版]
题目描述
将十进制数转换为八进制,并输出。
图:将十进制数转换为八进制并输出
输入
输入包含若干十进制正整数。
输出
输出相应的八进制数,每个占一行。
样例输入
1
2
3
7
8
9
19
10020345
样例输出
1
2
3
7
10
11
23
46162771
提示
提示:
书上有相应的算法,需要补充缺失的函数。
总结:
1、数值转换使用到堆栈,但是用函数调用(系统的堆栈)将会更为方便。
2、书中的算法实际上只能处理正整数,你有更好的方法还能够处理0和负整数么?
代码:
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
stack<int> s;
// list<int> s;
deque<int>q;
int n_10=0;
while(cin>>n_10)//每个循环是一个十进制数的转换
{
if(n_10==0)cout<<0;
while(n_10!=0) //不断将余数放入栈中,直至num为0
{
s.push(n_10%8);
n_10 /=8;
}//转换完毕
while(!s.empty())//开始输出转换结果 ,将栈中数值按顺序全部弹出
{
cout<<s.top();
s.pop()
}
cout<<endl;
}
return 0;
}
调试过程:
-
系统的堆栈??
添加链接描述