传递参数并求和

Pass arguments and take sum

我正在向我的 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。请帮助我。

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

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.