hhhabcd 发表于 2018-6-6 11:13:55

输出杨辉三角

很简的一个程序
parameter (n=10)
    integer a(n,n)
    do i=1,n
      a(i,1)=1
      a(i,i)=1
    enddo
    do i=1,n
      print 100, (a(i,j),j=1,i)
    enddo
    do i=3, n
      do j=2,j-1
            a(i,j)=a(i-1,j-1)+a(i-1,j)
      enddo
    enddo
    print *, "杨辉三角形打印如下"
    do i=1,n
      print 100, (a(i,j),j=1,i)
    enddo
100 format (1x, 10i5)   
    end

把上面红色部分的删掉之后 输出就变成了
杨辉三角形打印如下
   1
   1    1
   1    0    1
   1    0    0    1
   1    0    0    0    1
   1    0    0    0    0    1
   1    0    0    0    0    0    1
   1    0    0    0    0    0    0    1
   1    0    0    0    0    0    0    0    1
   1    0    0    0    0    0    0    0    0    1


加上之后就变正常了,这是为啥呢?


hhhabcd 发表于 2018-6-6 11:14:27

坐等大佬:-lol

胡文刚 发表于 2018-6-6 11:22:51

do j=2,i-1
不是
do j=2,j-1

hhhabcd 发表于 2018-6-6 11:34:19

真的诶,谢谢大佬
    不过还有一个问题,上面写错的话 那为啥把红色部分加上之后下面的输出就正常了呢?
   杨辉三角形打印如下
   1   
   1    1
   1    0    1
   1    0    0    1
   1    0    0    0    1
   1    0    0    0    0    1
   1    0    0    0    0    0    1
   1    0    0    0    0    0    0    1
   1    0    0    0    0    0    0    0    1
   1    0    0    0    0    0    0    0    0    1
杨辉三角形打印如下
   1
   1    1
   1    2    1
   1    3    3    1
   1    4    6    4    1
   1    5   10   10    5    1
   1    6   15   20   15    6    1
   1    7   21   35   35   21    7    1
   1    8   28   56   70   56   28    8    1
   1    9   36   84126126   84   36    9    1
请按任意键继续. . .

胡文刚 发表于 2018-6-6 11:41:05

因为红色代码对 j 取了值呀

li913 发表于 2018-6-7 10:14:32

本帖最后由 li913 于 2018-6-7 10:18 编辑

program testinteger,parameter::n=10
integer a(n,n), i, j
!赋初值
a = 0; a(:,1) = 1
write(*,"(i4)") 1
!计算
do i = 2, n
do j = 2, i
a(i,j) = a(i-1,j-1)+a(i-1,j)
end do
write(*,"(*(i4))") a(i,1:i)
end do
end program
页: [1]
查看完整版本: 输出杨辉三角