Fortran Coder

标题: 输出杨辉三角 [打印本页]

作者: hhhabcd    时间: 2018-6-6 11:13
标题: 输出杨辉三角
很简的一个程序
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
坐等大佬
作者: 胡文刚    时间: 2018-6-6 11:22
do j=2,i-1
不是
do j=2,j-1
作者: hhhabcd    时间: 2018-6-6 11:34
真的诶,谢谢大佬
    不过还有一个问题,上面写错的话 那为啥把红色部分加上之后下面的输出就正常了呢?
     杨辉三角形打印如下
     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   84  126  126   84   36    9    1
请按任意键继续. . .
作者: 胡文刚    时间: 2018-6-6 11:41
因为红色代码对 j 取了值呀
作者: li913    时间: 2018-6-7 10:14
本帖最后由 li913 于 2018-6-7 10:18 编辑

[Fortran] 纯文本查看 复制代码
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  





欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2