回 帖 发 新 帖 刷新版面

主题:一道竞赛题,有谁能解决??

[em7]

1、编程,从键盘输入一字符串,把输入中所有十六进制数字字符串转换成等价的十进制数输出,每个数占一行。
如输入:    TA3.4eGrs3Hb! ,        
则输出:  
163.3046875
3
11

回复列表 (共14个回复)

11 楼

小学老师没讲过?

12 楼

我的程序,自以为没错,但结果不大对,谁帮忙找找错。
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 楼

怎么我又看不懂了
高深。。。。。。

14 楼

555我也不会做

我来回复

您尚未登录,请登录后再回复。点此登录或注册