回 帖 发 新 帖 刷新版面

主题:question

哪一位能讲一下这道题
写一函数,输入一个十六进制的数,把它转换成十进制


谢谢

回复列表 (共1个回复)

沙发


program jinzhi(input,output);
  var
   n,m,shijin,l,i:longint;
   x,kk:char;
   z:array[1..10000] of longint;
    num: string;
  function f(n:longint;x:string):longint;
    var
     x1:char;
     i:longint;
     z:array[1..10000] of longint;
     begin
      for i:= 1 to length(x) do
       begin
        x1:=x[i];
        case x1 of
          '1','2','3','4','5','6','7','8','9','0':   z[i]:=ord(x1)-48 ;
          'A','B','C','D','E':z[i]:=ord(x1)-55;
         end;
        end;
          f:=0;
       for i:=1 to length(x) do
             f:=n*f+z[i]  ;
      end;
   procedure change(n:longint;l:longint);
     var
      k:longint;
      kk:char;
       begin
          k:= n mod l;
      if k>=10 then
       begin
         kk:=chr(k+55);
          n:=n div l ;
            if n<>0
              then change(n,l);
        write(kk);
      end
     else begin
       n:=n div l;
       if n<>0 then change(n,l);
       write(k);
      end;
     end;
  begin
  assign(input,'change.in');
  assign(output,'change.out');
  reset(input);
  rewrite(output);
    readln(n);
    readln(num);
    readln(m);
   change( f(n,num),m);
   close(input);
   close(output);
  end.

这个是进制转化题的解,适用于所有进制转化.输入是(输入的数的进制,数,和要转化成的进制),我相信你若理解这个程序,以后一般不怕进制转化的问题.重要在理解.祝你快理解.

我来回复

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