主题:求助:fortran语言杨辉三角,下三角形的
yanglei2006
[专家分:0] 发布于 2010-04-27 13:23:00
求助:fortran语言杨辉三角,下三角形的
另外再请告诉下如何进行格式控制
非常感谢
沙发
他寻欢欢 [专家分:90] 发布于 2010-05-08 22:40:00
!
!
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
喜欢哪个用哪个吧。