请提供一个编程代码

来源:百度知道 编辑:UC知道 时间:2024/06/05 06:53:24
请大家提供一个题目为:S=1/1+1/2+1/3...+1/n的pascal代码,其中S等于结果,n是用户输进去的一个数字。那位学编程的兄弟或大师给小弟一些帮助啊?!谢谢了。
请各位用for循环语句做。

program answer;
var
s,i,n:real;
begin
readln(n);
s:=0;
i:=0;
while i<=n do
begin
i:=i+1;
s:=s+1/i;
end;
writeln(s);
end.

这是理论上的代码,但是由于实型的精度问题,需要进行一定的改进。
比如while后面的i<=n可以改成abs(i-n)<=0.001;

用for 的
program answer;
var
n,i:integer;
s:real;
begin
readln(n);
s:=0;
for i:=1 to n do
s:=s+1/i;
writeln(s);
end.

这题目一旦n很大后结果会和实际结果相差很大,这是由于pascal精度造成的.