主题:[讨论]高手请进
ninjia
[专家分:10] 发布于 2008-08-14 17:53:00
小弟有一题不明,望各位高手解答:用turbo pascal解,编程使任一四位十六进制化成十进制.
小弟感激不尽!
回复列表 (共6个回复)
沙发
abcwuhang [专家分:1840] 发布于 2008-08-15 11:53:00
我程序可把n进制数转为10进制数.
program turn;;
var cf,s,i,j,n:longint;
m:string;
a:array [1..1000] of byte;
begin
writeln('input m,n');{n:进制 m:数}
fillchar(a,sizeof(a),0);
readln(m,n);
for i:=1 to length(m) do
begin
if (m[i]<='9') and (m[i]>='0') then a[i]:=ord(m[i])-48;
if (upcase(m[i])<='F')and (upcase(m[i])>='A') then a[i]:=ord(upcase(m[i]))-55;
if a[i]>=n then
begin
writeln('Error!');
halt;
end;
end;
cf:=1;
s:=a[length(m)];
for i:=length(m)-1 downto 1 do
begin
cf:=cf*n;
s:=s+a[i]*cf;
end;
writeln('(',m,')',n,'=',s);
end.
板凳
ninjia [专家分:10] 发布于 2008-08-15 13:10:00
请问高手,能否直接用子界类型来算?
3 楼
ninjia [专家分:10] 发布于 2008-08-15 13:10:00
加以字符型?
4 楼
ninjia [专家分:10] 发布于 2008-08-15 13:14:00
小弟还是初学者,能否用简单一些的...别用数组?
5 楼
abcwuhang [专家分:1840] 发布于 2008-08-26 10:47:00
program xxxxxxxx;
var s,t,i,j:longint;
ch:char;
begin
s:=0;
t:=0;
for i:=1 to 4 do
begin
t:=1;
for j:=1 to 4-i do
t:=t*16;
read(ch);
s:=s+(ord(upcase(ch))-55)*t;
end;
writeln(s);
end.
6 楼
xjwxwy [专家分:0] 发布于 2008-10-03 16:44:00
“编程使任一四位十六进制化成十进制”
Turbo Pascal下$ABCD,即为16进制,但这本身就是整型,无须转换。
如果这个4位十六进制是字串类型,不妨定义
type
str4=string[4];
下面是两个函数:
program t0;
type
str4=string[4];
function IntToStr(n:word):str4;assembler;整型转换字串型。
asm
mov ax,[bp+4]
les di,[bp+6]
mov cl,4
mov es:[di],cl
inc di
xor ch,ch
@@1: rol ax,1
rol ax,1
rol ax,1
rol ax,1
mov dl,al
and dl,0fh
or dl,030h
cmp dl,'9'
ja @@2
jmp @@3
@@2: add dl,7
@@3:
mov es:[di],dl
inc di
loop @@1
end;
function StrToInt(s:str4):word;assembler;字串型转换为整型。
asm
les di,[bp+4]
inc di
xor ax,ax
mov cx,4
@@1:
shl ax,1
shl ax,1
shl ax,1
shl ax,1
mov dl,es:[di]
cmp dl,'9'
ja @@2
jmp @@3
@@2: sub dl,7
@@3:
and dl,0fh
cmp dl,9
or al,dl
inc di
loop @@1
end;
var
i,t:word;
s:str4;
tf:text;
begin
assign(tf,'a.txt');
rewrite(tf);
for i:=0 to 100 do
begin
s:=IntToStr(i);
t:=StrToInt(s);
write(tf,s:5,t:4,' ');
if (i+1)mod 5=0 then writeln(tf);
end;
close(tf);
end.
a.txt文件内容如下:
0000 0 0001 1 0002 2 0003 3 0004 4
0005 5 0006 6 0007 7 0008 8 0009 9
000A 10 000B 11 000C 12 000D 13 000E 14
000F 15 0010 16 0011 17 0012 18 0013 19
0014 20 0015 21 0016 22 0017 23 0018 24
0019 25 001A 26 001B 27 001C 28 001D 29
001E 30 001F 31 0020 32 0021 33 0022 34
0023 35 0024 36 0025 37 0026 38 0027 39
0028 40 0029 41 002A 42 002B 43 002C 44
002D 45 002E 46 002F 47 0030 48 0031 49
0032 50 0033 51 0034 52 0035 53 0036 54
0037 55 0038 56 0039 57 003A 58 003B 59
003C 60 003D 61 003E 62 003F 63 0040 64
0041 65 0042 66 0043 67 0044 68 0045 69
0046 70 0047 71 0048 72 0049 73 004A 74
004B 75 004C 76 004D 77 004E 78 004F 79
0050 80 0051 81 0052 82 0053 83 0054 84
0055 85 0056 86 0057 87 0058 88 0059 89
005A 90 005B 91 005C 92 005D 93 005E 94
005F 95 0060 96 0061 97 0062 98 0063 99
0064 100
我来回复