从键盘上输入一个十进制数,输出其八进制和十六进制数

从键盘上输入一个十进制数,输出其八进制和十六进制数
急求答案!谢谢

pascal语言,在turbo pascal7.0中调试通过。
{$N+E-}
function convert_b(a:extended;b:integer):string;
   var
s,s1,s2:string;
m1:longint;
m2,n:extended;
i,j:longint;
ch:string[1];
   function d2c(i:integer):char;
   begin
case i of
0:d2c:='0';
1:d2c:='1';
2:d2c:='2';
3:d2c:='3';
4:d2c:='4';
5:d2c:='5';
6:d2c:='6';
7:d2c:='7';
8:d2c:='8';
9:d2c:='9';
10:d2c:='A';
11:d2c:='B';
12:d2c:='C';
13:d2c:='D';
14:d2c:='E';
15:d2c:='F';
else d2c:='Z';
end;
   end;
begin
m1:=trunc(a);
m2:=a-m1;
s1:='';
s2:='';
while m1>0 do begin
i:=m1 div b;
j:=m1 mod b;
{str(j:0,ch);}
ch:=d2c(j);
s1:=ch+s1;
m1:=i;
end;
        while (m2>0)and(length(s2)<24) do begin
n:=m2*b;
j:=trunc(n);
{str(j:0,ch);}
ch:=d2c(j);
s2:=s2+ch;
m2:=n-j;
end;
s:=s1+'.'+s2;
convert_b:=s;
end;

procedure trans(x:extended);
begin
writeln('(',x:0:16,')',10:0);
writeln('  =(',convert_b(x,2),')2');
writeln('  =(',convert_b(x,8),')8');
writeln('  =(',convert_b(x,16),')16');
end;

var
x:extended;
begin
{readln(x);}
x:=1234.5678;
trans(x);
end.

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-03-13
什么语言实现的??追问

C语言

需要这个程序的,设计

追答#include <stdio.h>

void oct(int num){ //转化为8进制
int octN = num / 8;
int octM = num % 8;
if (octN > 0){
oct(octN);
}
printf("%d", octM);
}

void hex(int num){ //转化为16进制
int octN = num / 16;
int octM = num % 16;
if (octN > 0){
oct(octN);
}
if (octM > 9){
printf("%c", octM-10+'A');
}
else{
printf("%d", octM);
}

}

int main()
{
int inputNum = 0;

printf("请输入一个十进制数:");
scanf("%d", &inputNum);

printf("转化为8进制为:");
oct(inputNum);
printf("\n");
printf("转化为16进制为:");
hex(inputNum);
printf("\n");
}