Hej伙计们,我是编程的初学者,但是我读了我的stackoverflow页面的份额,并且搜索了一下,如果在FORTRAN 90中甚至可以进行以下操作,仍然无法确定。< / p>
我试图隔离整数中的数字,指出障碍的位置,请考虑以下想法:
INTEGER :: n,mult,add
READ *,n! n = 8
mult = n * 2! = 16
add = ??? !我要添加1 + 6
的地方答案 0 :(得分:2)
另一种方式,我相信这对于阅读代码的人来说是显而易见的:
INTEGER FUNCTION sum_digits(num)
INTEGER, INTENT(in) :: num
INTEGER, DIMENSION(:), ALLOCATABLE :: digs
INTEGER :: num_digits, ix, rem
num_digits = FLOOR(LOG10(REAL(num))+1)
ALLOCATE(digs(num_digits))
rem = num
DO ix = 1, num_digits
digs(ix) = rem - (rem/10)*10 ! Take advantage of integer division
rem = rem/10
END DO
sum_digits = SUM(digs)
END FUNCTION sum_digits
我已经对它进行了一系列明显的测试,它已经通过了所有4个测试。如果您发现一个不起作用的案例,请修复它。如果您想要返回的数字数组,请修改该函数以返回该数字。如果你想让它适用于负整数,那么也可以将ABS()
放在适当的位置。
答案 1 :(得分:0)
拉出'ith'位数的一种方法是:
n/10**i-10*(n/10**(i+1))
所以你的例子:
n-10*(n/10) + n/10-10*(n/100)