WARNING: This example assumes the output is sent to a printer, and as a result, every formatted output contains printer control.
Write a program to print the multiplication table in the following form:
1 1 2 2 3 3 4 4 5 5 6 6 7 7 ....5....0....5....0....5....0....5....0....5....0....5....0....5....0....5 1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9 2*1= 2 2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 : : 8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72 9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
Click here to download this program.PROGRAM Multiplication_Table IMPLICIT NONE INTEGER, PARAMETER :: MAX = 9 INTEGER :: i, j CHARACTER(LEN=80) :: FORMAT FORMAT = "(9(2X, I1, A, I1, A, I2))" WRITE(*,FORMAT) ((i, '*', j, '=', i*j, j = 1, MAX), i = 1, MAX) END PROGRAM Multiplication_Table
1 1 2 2 3 3 4 4 5 5 6 6 7 7 ....5....0....5....0....5....0....5....0....5....0....5....0....5....0....5 1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9 2*1= 2 2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*1= 3 3*2= 6 3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 4*1= 4 4*2= 8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54 7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63 8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72 9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
This becomes unnecessary due to the third part of format scanning. This loop can be rewritten as follows:DO i = 1, MAX WRITE(*,FORMAT) (i, '*', j, '=', i*j, j = 1, MAX) END DO
Now we have nested implied DO loops, which generates the same results as those of the DO loop.FORMAT = "(9(2X, I1, A, I1, A, I2))" WRITE(*,FORMAT) ((i, '*', j, '=', i*j, j = 1, MAX), i = 1, MAX)