网王凤若绵云 百度云:pascal程序设计
例如5的12次方....
其实如果说会出现整形数益处的话,用函数也是会的如:
a:=power(5,12);
这样的话,a的附值就超过范围了。
我不知道你用的是什么版本,如果你用的是FreePascal的话,可以将变量定义为int64,就可以忽略益处问题,程序:
var s:int64;
i:integer;
begin
s:=1;
for i:=1 to 12 do
s:=s*5;
writeln(s);
end;
如果你用的是TurboPascal或BorlandPascal或更早版本,是不可以定义int64的,你只好设一个数组:
a:array[1..100]of integer;每一个位代表一个数位
这样用非常复杂的精确乘程序来获得结果。这里不方便打出来,你可以考虑参看《信息学竞赛》的第12章10节
虽然basic可以写作5^12, 但标准pascal没有这样的运算符.
标准pascal也没有这样的函数. 如果你用Delphi或Free pascal, 可以用 Power函数:
f := Power(5, 12);
如果想自己用标准pascal实现它, 可以用:
f := Exp(12*Ln(5));
楼上的方法不好, 因为5的12次方达20位数, 用整型数会溢出.
1.求a的b次方
pascal中没有幂次函数,所以求乘方运算要通过其它公式代换,这里介绍一种方法:
exp(n)=e^n
ln(a)是a的自然对数
所以 exp(ln(a))=a
因此,如果我们要计算a^b,就可以写成exp(ln(a)*b)
虽然没有什么函数,但是可以用循环来解,例如:
program baidu;
var
i,x:integer;
begin
x:=1;
for i:=1 to 12 do
x:=x*5;
writeln(x);
end.