您的位置:首页 > 其它

计算大数阶乘--Pascal版

2012-05-30 17:16 218 查看
先给出代码:

program fac;
var
   i,j,n,len: integer;
   rad,c,r: longint;
   buff: array[1..16000] of integer;
   num: string[5];

begin
   writeln('calculate n!');
   write('n=?');
   read(n);

   rad:=10000;
   len:=1;
   buff[1]:=1;
   for i:=1 to n do
   begin
      c:=0;
      for j:= 1 to len do
      begin
        r := buff[j] * i +c;
        buff[j] := r mod rad;
        c := r div rad;
      end;

      if c>0 then
      begin
        len:=len+1;
        buff[len]:=c;
      end;
   end;

   write('n!=',buff[len]);
   for i:=len-1 downto 1 do
   begin
       str(buff[i],num);
       if length(num)<4 then
          write(copy('0000',1,4-length(num)));
       write(buff[i]);
   end;
END.

说明:

开发环境: Free Pascal 2.4 (是一个dos程序,感觉和Turbo Pascal类似)

下载页面: http://down.tech.sina.com.cn/page/46658.html

Free Pascal 设置:

1. Dos 窗口代码页设为437(美国),否则会乱码。

2. Options->Compiler mode 设为 Turbo Pascal compatible

学习资料:

PASCAL语言培训教程,下载页面 http://www.05sun.com/downinfo/5433.html

下载,安装Free Pascal. 学习、编写和调试这个程序总共约花了2个小时。

曾经遇到的问题:

1. 变量r定义为integer导致数据溢出

2. 参数递减的for误用了to 关键字,改成 downto 后,一切正常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: