传递参数并求和
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
.
我正在向我的 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
.