Enddo
3.下列程序的输出结果是【 11 】【 18 】【 26 】。
Store 5 To N,S
Do While .T. N=N+1 S=S+N If N>8 Exit Else
? Str(S,2) Endif Enddo Return
4.下列程序的输出结果是【 46 】。
Store 1 To S,M,N
Do While M<=5 S=S+M+N N=3
Do While N>1 S=S+M+N N=N-1 Enddo M=M+2 Enddo ? S
5. 执行下列程序,写出相应语句的输出结果。
* 主程序:EX4_5.prg
Clear Memory
Dimension X(2,3),Y(8) X(1,3)=2 Y(7)=\
Do P1 With X,Y
? X(1,3),Y(7) && 输出【 5 】【 学习VFP 】
* 子程序P1.PRG:
Parameters M(2),N(2,3)
? M(1,3),N(7) && 输出【 2 】【 VFP 】 M(1,3)=2* M(1,3)+1 N(7)= \学习\Return
6. 执行下列程序,写出相应语句的输出结果。
* 主程序EX4_6.PRG:
Clear Memory
Dimension X(3,3),Y(10) X(3,2)= \学习\Y(8)=4
Do P2 With X,Y
? X(3,2),Y(8) && 输出【 学习VFP 】【 5 】
- 31 -
* 子程序P2.PRG:
Parameters M, N
? M(3,2),N(8) && 输出【 学习 】【 4 】 M(3,2)=M(3,2)+ \N(8)=N(8)+1 Return
7. 执行下列程序,写出相应语句的输出结果。
* 主程序EX4_7.PRG:
Clear Memory Dimension M(5) Store 3 To M,N,K
Do P3 With 2,M(3),Sign(N),2*N,K
? 2, M(3), Sign(N) && 输出【 2 】【 3 】【 1 】 ? 2*N, K && 输出【 6 】【 4 】
* 子程序P3.PRG:
Parameters X1,X2,X3,X4,X5
? X1,X2,X3 && 输出【 2 】【 3 】【 1 】 ? X4,X5 && 输出【 6 】【 3 】 X1=X1+1 X2=X2+1 X3=X3+1 X4=X4+1 X5=X5+1
8. 执行下列程序,写出相应语句的输出结果。
* 主程序EX4_8.PRG:
Set Udfparms To Reference Dimension M(5) Store 3 To M,N,K
? P4(2,M(3),Sign(N),2*N,K) && 输出【 8 】 ? M(3), Sign(N) && 输出【 3 】【 1 】 ? 2*N,K && 输出【 6 】【 4 】
* 子程序P4.PRG:
Parameters X1,X2,X3,X4,X5
? X1,X2,X3 && 输出【 2 】【 3 】【 1 】 ? X4,X5 && 输出【 6 】【 3 】 X2=X2+1 X3=X3+1 X4=X4+1 X5=X5+1 Return X1+6
9. 执行下列程序,写出相应语句的输出结果。
* 主程序EX4_9.PRG:
Set Talk Off X=10 Y=20 Do Sub1
? X,Y,Z && 输出【 10 】【 20 】【 3 】
- 32 -
* 子程序Sub1
Procedure Sub1 Private X Local Y Public Z X=1 Y=2 Z=3
? X,Y,Z && 输出【 1 】【 2 】【 3 】 Return
五、 用适当内容填空,使程序完整
1. 设计下面的程序,使它成为对任意数据表都可以追加、删除记录的通用程序。
Set Talk Off
Accept \请输入数据表名: \Use 【 &Name 】 ? \追加记录\? \删除记录\
Wait \请选择(1或2) \If 【 M=\】 Append Else
Input \输入要删除的记录号: \【 Goto N 或 Go N 】 Delete Pack Endif Use
Set Talk On
2. 运行下面程序,可以显示CJB.DBF表(表中有数值型字段“考试成绩”)中的考试成绩的最高分。
Use 【 CJB 】 MX=0
【 SCAN 】
MX=Max(考试成绩,MX) Endscan
? \最高分:\【 MX 】
3. 以下是评分统计程序,共有7位评委打分。统计时去掉1个最高分和1个最低分,其余5个分数的平均值即为最后得分。
Set Talk Off
Dimension CJ(7)
【 For N=1 To 7 】 && 依次输入7个评委的打分
Input \输入第\个评委的打分(0-100):\Endfor
Store CJ(1) To MX,MN,SM For M=2 To 7
- 33 -
If MX MX=CJ(M) Else If MN>CJ(M) MN=CJ(M) Endif 【 Endif 】 【 SM=SM+CJ(M) 】 Endfor AG=(SM-MX-MN)/5 ? \最后得分为:\ ? \去掉的最高分为:\? \去掉的最低分为:\ 4.下面程序的功能是按学号查找学生的基本情况,请将程序填写完整。 Set Talk Off Use XSB Index On 学号 Tag xuehao CX=\ Do While 【 Upper(CX)=\】 Accept \请输入要查找的学号:\Seek 【 XH 】 If 【 FOUND() 或 !EOF() 】 Display Else ? \查无此人!\Endif Wait \继续查询吗(Y/N)?\Enddo Use 5. 利用二维数组编写程序:首先建立3×3矩阵,然后输出该矩阵对角线上的元素。 Dimension A(3,3) For M=1 To 3 For N=1 To 3 Input \输入第\行第\列元素:\【 A(M,N)】 Endfor Endfor For M=1 To 3 ? ' ' 【 For N=1 To M 】 IF 【 M=N 】 ?? Str(A(M,N),5) Else ?? Space(4) Endif Endfor Endfor Return 6. 求1~20之间能被3整除的奇数的阶乘和。 - 34 - * 主程序: Set Talk Off S=0 For K=1 To 20 Step 2 If 【 Mod(K,3)=0 或 K/3=Int(K/3) 】 【 Do P1 With K 】 S=S+N Endif Endfor ? \~20之间内被3整除的奇数的阶乘和是: \Set Talk On * 程序P1.PRG: Para M 【 Public N 】 N=1 For J=1 To M N=N*J Endfor Return 六、 用程序中执行到的语句编号填空,多次执行到的语句重复填写其编号 * 主程序MAIN.PRG: Input '请输入:' To X 1) M=SUB(X)+5 2) ? M * 子程序SUB.PRG: Parameter N Private M If N>100 3) Return 0 Endif M=0 For K=1 To N 4) M=M+K^2 Next Return M 执行程序时,若输入:2,则执行【 1, 4, 4, 2 】语句,输出10。 若输入:-1,则执行【 1, 2 】语句,输出5。 若输入:101,则执行【 1, 3, 2 】 语句,输出5。 七、 修改程序中的错误 A数组有6个元素,前5个数组元素的值已按从小到大的顺序排列。下面程序段的功能是:通过键盘给第6个数组元素A(6)赋值,并使得A数组的6个元素按从小到大顺序输出。请根据题意,改正程序段中的错误。 - 35 -