数据结构实验之栈一:数制转换
2017-03-05 19:21
85 查看
描述:
输入一个十进制非负整数,将其转换成对应的 R (2 <= R <= 9) 进制数,并输出。
输入:
第一行输入需要转换的十进制非负整数;
第二行输入 R。
输出:
输出转换所得的
R 进制数。
输入例样:
1279
8
输出例样:
2377
做题思路:
运用十进制转化为其它进制公式求目标进制,例:十进制整数m=100转为六进制n,100%6=4(100/6=16),16%6=4(16/6=2) 2%6=2(2/6=0) 当m=0时停止,六进制数为244,将每次得到的余数压入栈中,最后将栈中的元素顺序输出,就得到所要的进制的数。
代码
解题心得:
要记住十进制转为为其它进制的公式,运用栈可以随时输入,不像数组大小固定,更加方便,而且栈的先进后出的顺序正好顺序输出目标进制的数,更加方便(也可能这是个偶然)此题也要注意m=0时要单独讨论。
输入一个十进制非负整数,将其转换成对应的 R (2 <= R <= 9) 进制数,并输出。
输入:
第一行输入需要转换的十进制非负整数;
第二行输入 R。
输出:
输出转换所得的
R 进制数。
输入例样:
1279
8
输出例样:
2377
做题思路:
运用十进制转化为其它进制公式求目标进制,例:十进制整数m=100转为六进制n,100%6=4(100/6=16),16%6=4(16/6=2) 2%6=2(2/6=0) 当m=0时停止,六进制数为244,将每次得到的余数压入栈中,最后将栈中的元素顺序输出,就得到所要的进制的数。
代码
#include<bits/stdc++.h> using namespace std; int main() { stack <int> s; int r,m; cin>>m>>r; if(m==0) cout<<"0"; for(;m>0;m=m/r) { s.push(m%r); } for(;s.size()!=0;) { cout<<s.top(); s.pop(); } cout<<endl; return 0; }
解题心得:
要记住十进制转为为其它进制的公式,运用栈可以随时输入,不像数组大小固定,更加方便,而且栈的先进后出的顺序正好顺序输出目标进制的数,更加方便(也可能这是个偶然)此题也要注意m=0时要单独讨论。
相关文章推荐
- 数制转换
- 数制转换
- SDUT 2131 数据结构实验之栈一:进制转换
- 3.2栈的应用举例----数制转换、括号匹配及行编辑
- 用栈实现数制转换
- 九度OJ 1118 数制转换
- 题目1118:数制转换(2008年北京大学图形实验室计算机研究生机试真题)
- HDU 2097 Sky数(数制转换)
- (1.2.2.1)栈和队列的应用:数制转换、括号匹配、后缀表达式求解,中缀表达式求解、双栈实现队列,min函数栈
- codeforces #308C C. Vanya and Scales(数制转换)
- [算法练习] 正整数数制转换
- 第六周--项目4数制转换
- 第六周-项目4-数制转换
- 第6周项目4 数制转换
- 2015年大二上-数据结构-栈(4)- 数制转换
- 数制转换
- 数据结构实验之栈一:进制转换
- SDUTACM 数据结构实验之栈一:进制转换
- 第5周项目4 -数制转换
- 第五周-项目四 数制转换