VF高手,帮忙看一道很简单的考试题!!!!

来源:百度知道 编辑:UC知道 时间:2024/07/01 06:34:24
执行下列程序后,在屏幕上显示的输出结果是什么
set talk off
clear
dimension A(3)
for k=1 to 3
A(k)=20-2*k
endfor
k=2
do while k>=1
A(k)=A(k)-A(k+1)
k=k+1
enddo
?A(1),A(2),A(3)
set talk on
return

程序的答案是:16 2 10
请高手详细指点每一行都是什么意思,给全分!!!

set talk off &&不用解释了吧?
clear &&清理屏幕
dimension A(3) &&定义数组
for k=1 to 3 &&开始循环
A(k)=20-2*k &&分别得出A(1)=18,A(2)=16,A(3)=14
endfor
k=2 &&复位k的值,从2开始
do while k>=1 &&从2开始循环
A(k)=A(k)-A(k+1) &&A(2)=(16-14)=2,再次循环便出错了,因为A(4)不存在,程序会提示你“数组下标溢出”
k=k+1
enddo
?A(1),A(2),A(3) &&输出
set talk on
return

很明显,错误处在DO WHILE 循环中,要使得输出结果为16 2 10
修改为一下程序即可:
set talk off
clear
dimension A(3)
for k=1 to 3
A(k)=20-2*k
endfor
k=n
do while k>=1
if k=3
A(k)=2*A(k)-A(1)
else
A(k)=A(k)-A(k+1)
endif
k=k-1
enddo
for k=1 to 3
??A(k),
endfor
set talk on
return

教你一个办法,去图书馆找本vfp的书,看看就全明白了。没办法解释什么意思,要是能自己在电脑上练习就更好了。我这就有vfp的书,你要的话可以免费给你。
希望对你有帮助。

错误的程序!!!