[求助]求助关于VF编程问题.小弟初来扎道.准备9月份考试...
有M个人围成一圈,每人一个的编号(1.2.3.....M),从第一个人数起,报到N时这个人就出圈,再继续数,报到N时这个人又出圈。出圈人的位置不再数,知道只剩下一个人为止,排出出圈人的顺序!
如果非要用VFP的话,可以用表,也可以用数组,以下的思路是用表把从1到M的编号按顺序存入表中,然后每隔N个记录下来,并删除表中的记录,不断循环,直到表中无记录(即所有编号均已取出)为止。
CREATE TABLE NOMBER FieldName1 n,8,0 &&设一个只有一个字段的表
Accept lnM,lnN &&接收数据
lcList=’排序顺序是:’ &&用字符变量保存抽出的编号顺序
lcI=lcM
USE NOMBER EXCLUSIV
DO WHILE lcI>0
APPEND BLANK
lcI=LcI-1
ENDDO
REPLACE ALL FieldName1 WITH RECNO()
GO TOP
DO WHIL ERECCOUNT() >0
LnJ= lnN
DO WHILE LnJ>=0
IF LnJ=0
LcList= lcList+ALLTRIM(STR(FieldName1,8,0))+’/’&&保存抽出的编号
DELECT &&删除已抽出的记录
PACK
ELSE
SKIP
IF EOF()
GO TOP
ENDIF
ENDIF
LnJ= LnJ-1
ENDDO
ENDDO
? lcList
以上代码未经验证,仅供参考。
[此贴子已经被作者于2007-6-17 15:22:23编辑过]