cdf5041353 发表于 2015-9-10 23:41:37

求助:if语句嵌套在循环语句内出现的问题

我的目的是将每行数据小于2的个数计算出来,在循环语句内嵌一个if判断语句,但是计算结果每行小于2的数据个数确是0,不知道问题出在哪,请指点一下迷津,感激不尽!

PROGRAM PCM
implicit none
integer:: ndc=10,npc=231,i,j,m
real*8, allocatable ::opt_all(:,:)
allocate(opt_all(ndc,npc))

open(10,file="opt_all.txt")   !!!读取数据
do i=1,ndc
read(10,*)(opt_all(i,j),j=1,231)   
enddo
close(10)

do i=1,ndc
m=0
do j=1,npc
if(opt_all(i,j)<2)then
m=m+1
endif
enddo

print*,m
pause

enddo
END PROGRAM

楚香饭 发表于 2015-9-11 14:22:52

你的编译器不允许PAUSE语句吧。这个语句被废止了,建议用 read(*,*) 代替。
此外,可以用 count 简化你的代码

Program pcm
Implicit None
Integer :: ndc = 10, npc = 231, i
Real *8, Allocatable :: opt_all(:, :)
Allocate (opt_all(ndc,npc))
Open (10, File='opt_all.txt') ! !!读取数据
Do i = 1, ndc
    Read (10, *) opt_all(i,:)
    write(*,*) count( opt_all(i,:)<2.0d0 )
    read(*,*)!PAUSE   
End Do
Close (10)
End Program pcm

cdf5041353 发表于 2015-9-11 15:23:59

楚香饭 发表于 2015-9-11 14:22
你的编译器不允许PAUSE语句吧。这个语句被废止了,建议用 read(*,*) 代替。
此外,可以用 count 简化你的代 ...

感谢您的修正~但是按这个程序运行的结果仍然显示的是0,数据明明有小于2的情况,我也仔细检查了程序,不晓得问题出在哪,麻烦您再给看看是什么问题啊,感谢!!!

fcode 发表于 2015-9-11 16:17:52

多按几下回车,后面就不是 0 了。前两行好像都是 0

cdf5041353 发表于 2015-9-12 17:50:41

fcode 发表于 2015-9-11 16:17
多按几下回车,后面就不是 0 了。前两行好像都是 0

奥,我明白了,前几行是没有小于0的情况:-L
页: [1]
查看完整版本: 求助:if语句嵌套在循环语句内出现的问题