注册 登录
编程论坛 VFP论坛

求教各位大神vfp程序运行结果有疑问

誉宝宝1015 发布于 2022-03-21 21:17, 1955 次点击
clear memory
dime x(4,3)
i=1
do while i<3
   j=i+1
   x(i,j)=j
  do sub
   x(i,j)=i
   i=i+1
enddo
x(j,i)=4
?x(1,1),x(1,2),x(1,3)
?x(6),x(2,1),x(5),x(7)
return
proc sub
if x(i,j)>=3
x(i+j)=x(i,j)
endif
j=j+1
return
&&这个程序的x(7)答案是2,但是我想不明白,求教各路大神
11 回复
#2
吹水佬2022-03-22 08:23
3列的,7 是 3,1 吧
#3
誉宝宝10152022-03-22 19:04
回复 2楼 吹水佬
是,按二维数组是3.1,但是书中答案这个数组的值是2,我用vfp运行后也是2,但是我分析不出来
只有本站会员才能查看附件,请 登录
这是我分析的过程
只有本站会员才能查看附件,请 登录
,老师,哪里出问题?运算过程我就没有发现想X(3,1)的值
#4
誉宝宝10152022-03-22 19:06
这是我分析的过程,老师,哪里出问题?运算过程我就没有发现想X(3,1)的值
只有本站会员才能查看附件,请 登录
#5
gs25367856782022-03-25 16:21
朋友,你已经做出来了,你要的X(7),期实就是X(3,1)
在你的作品图上就是X(2,4)
请看如下的代码段
只有本站会员才能查看附件,请 登录
#6
誉宝宝10152022-03-29 20:42
回复 5楼 gs2536785678
是的,老师,我试了试也是2 ,能麻烦老师解释一下吗,我又试了
dimension x(4,3)
x(2,4)=2
?x(3,1)  &&是2
x(2,5)=6
?x(3,2) &&是6
二维数组彼此怎么转换啊
#7
吹水佬2022-03-29 21:41
dimension x(4,3)
x(2,5)=6
这是什么神操作? 想表达什么?
#8
誉宝宝10152022-03-29 21:53
回复 7楼 吹水佬
老师,其实就是dimension x(4,3)
 x(2,4)=2
 ?x(3,1)  
为什么也是2  
就是数组中给x(2,4)赋值为2,那么输出x(3,1)答案也是2,什么原因?二维数组也可以彼此转换吗?
#9
吹水佬2022-03-29 21:59
以下是引用誉宝宝1015在2022-3-29 21:53:16的发言:

老师,其实就是dimension x(4,3)
 x(2,4)=2
 ?x(3,1)  
为什么也是2  
就是数组中给x(2,4)赋值为2,那么输出x(3,1)答案也是2,什么原因?二维数组也可以彼此转换吗?

先回答 7 楼,自然就明
#10
誉宝宝10152022-03-30 20:47
回复 9楼 吹水佬
还是因为之前程序题目,这个程序的x(7)答案是2,x(7)也就是x(3.1),我循环推算没有推出来x(3,1)=2 这个答案,但是过程中推出x(2,4)=2,有位老师回复x(2,4)和x(3,1)答案是一样的都是2。我想明白这是为什么,老师?还是我这个题推算过程推错了,因为接触不久,很多地方模糊,有空时希望可以得到各位老师的提点
#11
吹水佬2022-03-30 21:44
回复 10楼 誉宝宝1015
先了解一下VFP的数组概念
DIMENSION arr[2,4]  定义数组arr为2行4列,共8个元素
arr[i,j] 时 1 <= i <= 2; 1 <= j <= 4
要转换成一维数组需重新定义:DIMENSION arr[8]
arr[i] 时 1 <= i <= 8
要转换成二维数组arr[4,2]需重新定义:DIMENSION arr[4,2]
arr[i,j] 时 1 <= i <= 4; 1 <= j <= 2

VFP有函数可以对数组的行列与元素编号相互转换,参考VFP帮助(A字符打头的命令函数名好多与数组有关)。


#12
laowan0012022-03-31 09:15
数组使用时还是要规范,可以提高代码可读性及可维护性
1