【发布时间】:2015-06-18 01:59:12
【问题描述】:
我被这个问题困住了。我们应该在数组中找到间隙的总和。我已经编写了代码来查找数组的总和,但不知道如何找到间隙的总和。这就是我所拥有的。所以差距是2,3,4,1,总和应该是10。
.386
.model flat,stdcall
.stack 4096
ExitProcess proto,dwExitCode:dword
.data
array DWORD 0,2,5,9,10
.code
main proc
mov edi,OFFSET array
mov ecx,LENGTHOF array
mov eax,0
L1:
add eax,[edi]
add edi,TYPE array
loop L1
invoke ExitProcess,0
main endp
end main
【问题讨论】:
-
减去两个值会得到一个间隙。您的循环应该比项目数短一,因为间隙比项目数少一。
-
刚看到你的回复,还在习惯这个网站。我不确定如何使循环更短。不会是 mov ecx, LENGTHOF array/1 之类的吗?
-
间隙的总和只是最后一个元素减去第一个元素,除非您在谈论间隙的绝对值,在这种情况下,如果数字不是,则不是增加。
-
在这种情况下,总和应该是 10,间隙是书上给出的 2,3,4,1。
-
对。这与最后一个元素 10 减去第一个元素 0 相同。我的意思是计算间隙的总和,您只需从最后一个元素中减去第一个元素。那是因为空白的总和是
(a1 - a0) + (a2 - a1) + ... + (aN - aN-1),中间的所有项都取消了,剩下aN - a0。