急!!!pascal题目!

来源:百度知道 编辑:UC知道 时间:2024/05/22 16:34:09
1.将一个四位的十六进制数转换为十进制数。
如输入B56A,则输出46442.
若有人解答得好,定有悬赏!(100~200)

你找对人了
是要pascal源代码吗?
var s:String;
i,k,j,tot:longint;
begin
readln(s);
k:=1;{每一位的权值}
for i:=length(s) downto 1 do begin
if ord(s[i])>57 then j:=ord(s[i])-55 else j:=ord(s[i])-48;{看这一位是字母还是数字}
tot:=tot+j*k;{数*权值}
k:=k*16;{权值*16}
end;
write(tot);
end.

注意输入是大写

实际上,十六进制转10进制就是最右边一位的数字大小(如A就是10,B就是11)*16^0 第二位*16^1 第三位*16^2....

const
h:array[1..4] of longint=(4096,256,16,1);
var str:string;
ch:char;
a:array[1..4] of longint;
shu,i,j,k,m,n:longint;
begin
readln(str);
for i:=1 to 4 do
begin
ch:=str[i];
case ch of
'1'..'9':val(ch,a[i]);
'A'..'F':a[i]:=ord(ch)-ord('A')+10;
end;
end;
shu:=0;
for i:=1 to 4 do
begin
shu:=shu+h[i]*a[i];
end;