一道FoxBASE考题的分析 刘寅斌 1997-01-01 #3  题目:以下是用FoxBASE表示计算1~10阶乘的程序。请在空格处填上合适的语句,以使程序完整,并能正确地实现该功能。   (提示:X的阶乘=1*2*3*....*X)   CLEAR           (1)   SET TALK OFF    (2)   I=1             (3)   DO WHILE .T.    (4)   K=1             (5)   (1)             (6)   DO WHILE J<I+1  (7)   (2)             (8)   J=J+1           (9)   ENDDO           (10)   ?K              (11)   I=I+1           (12)   IF I>10         (13)   (3)             (14)   ENDIF           (15)   ENDDO           (16)   RETURN          (17) #3  分析:   类似题目被参加等级考试的考生视为难点,很多时候感到无从下手。其实,解这类题目,也有一定的方法。首先要正确理解题意,弄清楚程序要实现的目的和功能,要做到有的放矢,心中有数,不能一上来就写程序;其次是要通读程序,在对程序有了大致了解后,再着重研究需填写的语句,以及其前后的程序段,必要时可画出流程图进行仔细分析,最后给出正确的答案。   该题目的是求1~10的阶乘,题意很清晰。通读程序,核心部分在于两个DO WHILE循环,这是实现程序功能的主要部分。既然是求1~10的阶乘,所求的结果放在哪里呢?怎样显示呢?程序中第(11)行?K明显地表示用K显示运算结果。注意第(7)行,出现了一个前面未曾赋值的变量J,显然(1)应是给J赋值的语句。第(11)句显示K的结果,则(2)处必然是涉及K的运算。至于(3),很显然是在超出所需范围以后的一个退出循环处理语句,即应填EXIT。仔细分析(还可画出流程图),可得出答案为:   (1)J=1   (2)K=K*J   (3)EXIT #3  作者语:   此题的算法较繁琐,还有更简洁的算法。请读者朋友考虑一下如何简化算法。