pascal题目-栈-进制转换题目描述十进制数N和其他d进制数的转换是计算机实现计算的基本问题,其解决方法很多,其中一个

pascal题目-栈-进制转换
题目描述
十进制数N和其他d进制数的转换是计算机实现计算的基本问题,其解决方法很多,其中一个简单算法基于下列原理:
   N
= (N div d)×d + N mod d
(其中:div
为整除运算,mod 为求余运算)
例如:(1348)10
= (2504)8 ,其运算过程如下所示: 
8|_1348_
8|_168__
4
8|_21___
0
8|_2____
5
8|_0____
2
结果为2504
请帮忙设计一个程序,输入10进制数和需要转换的进制,求出对应的进制转化后的数。
输入
有多组数据,对于每组数据,输入两个正整数,10进制数n和需要转化的进制m,其中,n是个不超过int范围的正整数,m是个2到9的正整数。
输出
对于每组数据,输出所对应的进制转化后的数。
样例输入
1348 8
34 5
样例输出
2
5
0
4
1
1
4
冰泉凝 1年前 已收到1个回答 举报

空-心-菜 幼苗

共回答了9个问题采纳率:88.9% 举报

非常基础的进制转化,思路在代码中给出:
var
a:array[0..100] of longint;
x,y,k,i:longint;
begin
while not eof do
begin
readln(x,y);
k:=0;//从头开始,个数清零
while x>0 do
begin
k:=k+1;//移到下一个位置
a[k]:=x mod y;//取余数
x:=x div y;
end;
if k=0 then writeln(0);//防止被坑,当x=0的时候也要输出0
for i:=k downto 1 do writeln(a[i]);//倒序输出
end;//判断输入有没有结束
end.

1年前

8
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.047 s. - webmaster@yulucn.com