(24)要求以下程序的功能是计算:s= 1+12+13+……+110

(24)要求以下程序的功能是计算:s= 1+12+13+……+110,第1张

C

因为 s = s + 1 / n

n是 int 整型变量

1 / n 是整数除法,当然不对了

将 1 改为浮点数

s = s + 1.0f / n

这需要用到高精度乘法和加法。

以下是Pascal语言实现的代码:

type

ta=record

c:array[1..100]of integer

l:integer

end

var

s:array[1..50]of ta

i,n,j:integer

begin

readln(n)

s[1].c[1]:=1

s[1].l:=1

for i:=2 to n do

begin

for j:=1 to s[i-1].l do

s[i].c[j]:=s[i-1].c[j]*i

j:=1

while (s[i].c[j]>0)or(j<=s[i-1].l) do

begin

if s[i].c[j]>=10 then

begin

inc(s[i].c[j+1],s[i].c[j] div 10)

s[i].c[j]:=s[i].c[j] mod 10

end

inc(j)

end

dec(j)

s[i].l:=j

end

for i:=2 to n do

begin

for j:=1 to s[i-1].l do

begin

inc(s[i].c[j],s[i-1].c[j])

if s[i].c[j]>=10 then

begin

inc(s[i].c[j+1])

s[i].c[j]:=s[i].c[j] mod 10

end

end

if s[i].c[s[i].l+1]>0 then inc(s[i].l)

end

for i:=s[n].l downto 1 do

write(s[n].c[i])

writeln

readln()

end.

样例输入:

10

样例输出:

4037913

如有错误,请多原谅。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7822149.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存