回 帖 发 新 帖 刷新版面

主题:求助:fortran语言杨辉三角,下三角形的

求助:fortran语言杨辉三角,下三角形的
另外再请告诉下如何进行格式控制
非常感谢

回复列表 (共1个回复)

沙发

!
!
INTEGER            N
INTEGER            A(2,100)
INTEGER            I,K

WRITE(*,*)'请输入需要打印杨辉三角的行数:'
READ(*,*)N

A(1,1)=1
A(2,1)=1;A(2,2)=1
DO I=1,N/2
    WRITE(*,100)(A(1,K),K=1,2*I-1)
    WRITE(*,100)(A(2,K),K=1,2*I)

!    A(1,1)=1                            !注意:这里已经求出了下一次打印的数组,
    DO K=2,2*I                            !而退出循环时这两行数并未打印呢
        A(1,K)=A(2,K-1)+A(2,K)
    END DO
    A(1,2*I+1)=1

!    A(2,1)=1
    DO K=2,2*I+1
        A(2,K)=A(1,K-1)+A(1,K)
    END DO
    A(2,2*I+2)=1
END DO

IF(MOD(N,2)==1)THEN
!    A(1,1)=1
!    DO K=2,N-1
!        A(1,K)=A(2,K-1)+A(2,K)
!    END DO
!    A(1,N)=1
    WRITE(*,100)(A(1,K),K=1,N)        !如果是奇数,则打印第N行,A(1,:)
END IF
100 FORMAT(1X,100I5)
END


或者


!
!
INTEGER            N
CHARACTER        CH
INTEGER            A(2,100)
INTEGER            I,K

30    WRITE(*,*)'请输入需要打印杨辉三角的行数:'
READ(*,*)N

A(1,1)=1
A(2,1)=1;A(2,2)=1
    I=1
20    WRITE(*,100)(A(1,K),K=1,I)        !输出奇数行的值,依次输出1,3,5,7,......
    I=I+1
!    A(1,1)=1                                                
    DO K=2,I                        !计算第三、五、......次输出的数    
        A(1,K)=A(2,K-1)+A(2,K)
    END DO
    A(1,I+1)=1
    IF(I>N)GOTO 10

    WRITE(*,100)(A(2,K),K=1,I)        !输出偶数行的值,依次输出2,4,6,8,......
    I=I+1
!    A(2,1)=1                        
    DO K=2,I                        !计算第四、六、......次输出的数
        A(2,K)=A(1,K-1)+A(1,K)        
    END DO
    A(2,I+1)=1
    IF(I<=N)GOTO 20

10    WRITE(*,*)'是否继续计算?是(Y),否(N)。'
    READ(*,*)CH
    IF(CH=='Y')THEN
        GOTO 30
    ELSE IF(CH=='N')THEN
        GOTO 40
    ELSE
        WRITE(*,*)'error,请重新输入!'
        GOTO 10
    END IF
!10    DO K=1,0
!    END DO
!10    READ(*,*)
40    WRITE(*,*)
100 FORMAT(1X,100I5)
END
喜欢哪个用哪个吧。

我来回复

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