传递参数并取总和

时间:2015-04-22 13:30:37

标签: fortran fortran90

我将两个值传递给我的Fortran程序,我需要获取这些参数的总和并将其打印为结果:

我有读取参数的程序如下:

PROGRAM Argtest

  IMPLICIT NONE
  integer*4 nargs,i
  character arg*80 

nargs = iargc() 

do i = 0,nargs 
  call getarg(i, arg) 
  print '(a)', arg
end do
END 

我传递了值10和20。 我试过这样:

PROGRAM Argtest

  IMPLICIT NONE
  integer:: nargs,i
  character:: arg
  integer:: num1
  integer:: num2
  integer:: result

nargs = iargc() 

do i = 1,nargs 
  call getarg(i, arg) 
  !print *, arg
  IF( i == 1) THEN
   num1 = ichar(arg)
  ELSE IF(i == 2) THEN
      num2  = ichar(arg)
  ELSE

  end IF
end do
result = num1+num2
print *, num1
print*,num2
END

我需要将答案打印为30.但是我得到的值是49和50而不是得到10和30.请帮帮我。

1 个答案:

答案 0 :(得分:1)

这是一个非常简单的版本:它将参数作为字符串读取,将它们一个接一个地转换为int,然后将它们全部添加。

PROGRAM Argtest

  IMPLICIT NONE
  integer*4 nargs,i
  character arg*80
  integer :: total, int_arg

nargs = iargc()

total = 0

do i = 1,nargs
  call getarg(i, arg)
  read(arg, *) int_arg
  total = total + int_arg
end do

print *, "total is ", total

END

请注意,我从参数1开始,而不是0(因为这是您的程序名称,不能转换为数字)。

您现在已经更新了您的问题:ichar将单个字符转换为与该字符的ASCII代码对应的整数。 您需要使用read(ch_num, '(I)') int_num"10"之类的字符串转换为整数10