1. 程式人生 > >C語言 高精度演算法

C語言 高精度演算法

program test;
type
    
    my_arr=array [0..100] of longint;
var
    
    str1,str2:string;
    
    d1,d2,d3:my_arr;
 
procedure replace(str:string;var arr:my_arr);
var
    
    i,j:longint;
    
    begin
        
        arr[0]:=length(str);
            
            for i:=1 to arr[0] do
                
                begin
            
            arr[i]:=ord(str[arr[0]-i+1])-ord('0');
                
                end;
    
    end;
function max(i,j:longint):longint;
    
    begin
        
        if i>j then exit(i);
        
        exit(j);
    
    end;
procedure add_arr(arr1,arr2:my_arr;var arr3:my_arr);
var
    
    i,j,k,t:longint;
    
    begin
        
        fillchar(arr3,sizeof(arr3),0);
        
        k:=max(arr1[0],arr2[0]);
            
            for i:=1 to k do
            
            begin
                
                t:=(arr1[i]+arr2[i]+arr3[i]);
                
                arr3[i]:=t mod 10;
                
                arr3[i+1]:=t div 10;
            
            end;
        
        if arr3[k+1]<>0 then
            
            arr3[0]:=k+1
        
        else
            
            arr3[0]:=k;
    
    end;
 
 procedure print_arr(arr:my_arr);
var
   
   i:longint;
    
    begin
        
        if arr[0]=0 then
            
            begin
                
                writeln(0);
                
                exit;
            
            end;
        
        for i:=arr[0] downto 1 do
            
            write(arr[i]);
            
            writeln;
    
    end;
   
begin
    
    readln(str1);
    
    replace(str1,d1);
    
    readln(str2);
    
    replace(str2,d2);
    
    add_arr(d1,d2,d3);
    
    print_arr(d3);
end.

       筆者大一的時候學了一種新的程式語言叫做C語言,相信很多同學都已經接觸過C語言了,今天在xiaoz吧看到某無良吧主發的題目,我就說這題目不是一般a+b,這傢伙還一直狡辯,現在我來跟大家分享一下有關高精度計算的C語言演算法。

       不多說,當然先上無良吧主今日分享的題目,見下圖: