主题:一道竞赛题,有谁能解决??
pinpai
[专家分:0] 发布于 2005-03-21 10:57:00
[em7]
1、编程,从键盘输入一字符串,把输入中所有十六进制数字字符串转换成等价的十进制数输出,每个数占一行。
如输入: TA3.4eGrs3Hb! ,
则输出:
163.3046875
3
11
回复列表 (共14个回复)
11 楼
cskeleton [专家分:10] 发布于 2005-04-14 15:56:00
小学老师没讲过?
12 楼
smallboat [专家分:60] 发布于 2005-04-17 10:55:00
我的程序,自以为没错,但结果不大对,谁帮忙找找错。
program aaaa;
const nn=256;
var a:array[1..nn]of integer;
str:string;
p,q:integer;
procedure readdata;
var i:integer;
begin
fillchar(a,sizeof(a),0);
readln(str);
q:=0; p:=0;
for i:=1 to length(str) do begin
if ( ( ord(str[i])<=57) and ( ord(str[i])>=48) ) then begin
inc(q); a[q]:=ord(str[i])-48;
end;
if (str[i]>='A') and (str[i]<='F') then begin
inc(q); a[q]:=ord(str[i])-55;
end;
if (str[i]>='a') and (str[i]<='f') then begin
inc(q); a[q]:=ord(str[i])-87;
end;
if str[i]='.' then p:=q;
end;
end;
procedure work;
var i:byte;
s:longint;
x,y:real;
begin
s:=0; x:=0; y:=1/16;
for i:=1 to p-1 do
inc(s,a[i]*16*(p-i));
inc(s,a[p]);
for i:=p to q do begin
x:=x+a[i]*y;
y:=y/16;
end;
x:=x+s;
writeln(x:10:7);
end;
begin
readdata;
work;
end.
13 楼
xuzhenyi [专家分:850] 发布于 2005-04-24 16:09:00
怎么我又看不懂了
高深。。。。。。
14 楼
yuanjiaw [专家分:0] 发布于 2009-09-27 20:51:00
555我也不会做
我来回复