回 帖 发 新 帖 刷新版面

主题:请高手帮我看看,程序结果不对

program vv
real va(100),ve(100)
pi=acos(-1.0)
do i=1,13,1
q1=rand()
q2=rand()
va(i)=sqrt(-2.0*log(q1))*cos(2.0*pi*q2)
ve(i)=va(i)**2
ve(i)=ve(i)+ve(i)
write(*,*)ve(i)
enddo
end
我想把每次一循环出来的ve(i)加起来,求和。但结果只是出来每一步ve(i)=va(i)**2的结果,我把求和放到循环外结果就变成0.0000。。。,请高手帮忙,在线等,急啊,万分感谢!

回复列表 (共5个回复)

沙发

我用的是vf6.5编译的

板凳


program vv
real va
pi=acos(-1.0)
ve = 0.0
do i=1,13,1
   q1=rand()
   q2=rand()
   va(i)=sqrt(-2.0*log(q1))*cos(2.0*pi*q2)
   ve = ve + va(i)**2
enddo
write(*,*) ve
end

3 楼

谢谢,已经搞定了。

4 楼

突然发现
program vv
real va
pi=acos(-1.0)
ve = 0.0
do i=1,13,1
   q1=rand()
   q2=rand()
   va(i)=sqrt(-2.0*log(q1))*cos(2.0*pi*q2)
   ve = ve + va(i)**2
enddo
write(*,*) ve
end
里面real va,是不是应该是real va(13)。

5 楼

是有矛盾。
一种改法是按照你说的,把va定义为数组。
可是,va定义为数组,但是并没有用到它的数组特性,所以va定义为简单变量即可。这样,另一种改法是将循环中的va(i)改为va也行。

我来回复

您尚未登录,请登录后再回复。点此登录或注册