Fortran 输出, 在运行时决定变量所占的位置

这篇博客介绍了如何在Fortran中使用字符串动态地定义输出格式。通过示例展示了如何根据变量值来决定输出的整数位数和小数位数,从而避免不必要的空格。程序包括读取用户输入并进行格式化回显的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

!使用字符串来描述格式

PROGRAM hw

IMPLICIT NONE

CHARACTER(LEN=128)::str_format !!!highlight

INTEGER::num_i=21

REAL::num_r=3.1415926

    str_format='("The Result for iteration",I3," is",F8.5)'

    WRITE(*,str_format) num_i,num_r 

END PROGRAM

 

!例子, 下面这个程序提示用户输入一个数据,然后回显至显示器, 在数字两端没有多余的空格

PROGRAM hw_format

IMPLICIT NONE

CHARACTER(LEN=32)::FORMAT_REAL

 

INTEGER::IO_state

CHARACTER(LEN=128)::IO_msg

 

CHARACTER(LEN=128)::str_format

INTEGER::num_decimals=6

REAL::num_r=6.021245

 

    WRITE(*,*) 'Enter a real number:'

    IO_state=-1

    IO_msg=''

    DO

        READ(*,*,IOSTAT=IO_state,IOMSG=IO_msg) num_r

        IF(IO_state==0) EXIT

        WRITE(*,*) TRIM(ADJUSTL(IO_msg))

        WRITE(*,*) 'Correct your input:'

    END DO

    WRITE(*,'('//'"The number you entered is ", '//FORMAT_REAL(num_r,num_decimals)//'". These words following the number you just inputed."'//')') num_r

END PROGRAM hw_format

 

FUNCTION FORMAT_REAL(x,d)

IMPLICIT NONE

REAL,INTENT(IN)::x     ! the number needed to be formated

INTEGER,INTENT(IN)::d  ! number of dicimals 

CHARACTER(LEN=32)::FORMAT_REAL

CHARACTER(LEN=32)::temp_format

    ! 0<abs(x)<0.1 abs(x)>=10.0

    IF((ABS(x)>0 .AND. ABS(x)<0.1) .OR. (ABS(x)>=10.0)) THEN

        IF(x>0) THEN

            WRITE(temp_format,*) 'ES',6+d,'.',d

        ELSE

            WRITE(temp_format,*) 'ES',7+d,'.',d

        END IF

    ELSE

        IF(x>0) THEN

            WRITE(temp_format,*) 'F',d+2,'.',d

        ELSE

            WRITE(temp_format,*) 'F',d+3,'.',d

        END IF    

    END IF

    FORMAT_REAL=temp_format

END FUNCTION FORMAT_REAL

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值