vfp程序改错.docx
《vfp程序改错.docx》由会员分享,可在线阅读,更多相关《vfp程序改错.docx(46页珍藏版)》请在冰豆网上搜索。
vfp程序改错
VisualFoxpro程序改错
〖第1题〗(练习题所在文件夹:
163)
*题目:
该程序完成口令检验功能。
输入三次不正确退出。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
SETTALKOFF
CLEAR
ass1="AbCdEf"
TT=1
DOWHILETT<4
@10,20SAY"请输入口令:
"
SETCONSOLEOFF
ACCEPTTOass
SETCONSOLEON
**********FOUND**********
IFass1=ass
CLEAR
?
"欢迎使用本系统!
"
**********FOUND**********
LOOP
ELSE
**********FOUND**********
TT=TT-1
CLEAR
?
"口令错,按任意键再输入一次!
"
WAIT""
ENDIF
ENDDO
RETURN
答案:
1).IFUPPER(ass1)==UPPER(ass)或IFUPPER(ass1)==UPPER(ass)
2).EXIT
3).TT=TT+1或TT=1+TT
〖第4题〗(练习题所在文件夹:
500)
*题目:
ZHG.DBF是一个职工信息文件,其中包含编号(C5)、姓名
*(C8)、性别(C2)、政治面貌(C4)、出生日期(D8)等字
*段。
性别用字符串"男"或"女"表示,政治面貌用字符串"
*党员"、"团员"或"群众"表示。
此文件已按政治面貌建立
*了索引,索引文件名是ZHG_ZHZH.IDX。
*程序功能是:
显示输出所有政治面貌为"群众"的女职工的
*姓名和出生日期(每行输出一个职工的信息)在屏幕上
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
settalkoff
clear
***********FOUND**********
USEZHG
SEEK"群众"
***********FOUND**********
DOWHILE!
EOF()
IF性别="女"
DISP姓名,出生日期
***********FOUND**********
ENDD
SKIP
ENDDO
USE
SETTALKON
答案:
1).USEZHGINDEXZHG_ZHZH
2).DOWHILE政治面貌="群众"或DOWHILE政治面貌='群众'或DOWHILE政治面貌=[群众]
3).ENDIF
〖第5题〗(练习题所在文件夹:
105)
*题目:
在RSH.dbf中,查找职工赵红的工资,如果工资小于200元,
*则增加100元;如果工资大于等于200元且小于500元时,则增
*加50元;否则增加20元。
最后显示赵红的姓名和工资。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
CLEAR
USERSH
***********FOUND**********
LOCATEFOR姓名=赵红
DOCASE
CASE工资<200
REPLACE工资WITH工资+100
CASE工资<500
REPLACE工资WITH工资+50
OTHERWISE
REPLACE工资WITH工资+20
ENDCASE
***********FOUND**********
LIST姓名,工资
USE
答案:
1).LOCATEFOR姓名="赵红"或LOCAFOR姓名='赵红'或LOCAFOR姓名="赵红"或LOCATEFOR姓名=[赵红]或LOCAFOR姓名=[赵红]或LOCATEFOR姓名='赵红'
2).DISP姓名,工资或?
姓名,工资或DISPLAY姓名,工资
〖第6题〗(练习题所在文件夹:
174)
*题目:
计算S=2+4+6+...+98+100的程序。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
store0tos,i
***********FOUND**********
doi<=99
***********FOUND**********
i=i+1
s=s+i
enddo
?
"s=",s
答案:
1).dowhilei<=99或dowhilei<100或dowhilei<=98或dowhilei<99
2).I=2+I或I=I+2或STORI+2TOI
〖第7题〗(练习题所在文件夹:
520)
*题目:
猴子吃桃问题:
猴子第一天摘下若干个桃子,当即吃了一半,
*还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉
*一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一
*半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
*求第一天共摘了多少。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
settalkoff
clear
DAY=9
***********FOUND**********
X2=0
DOWHILEDAY>0
***********FOUND**********
X1=(X2+1)/2
X2=X1
***********FOUND**********
DAY=DAY+1
ENDDO
?
"第一天摘下",X1,"个桃子"
SETTALKON
答案:
1).X2=1
2).X1=(X2+1)*2
3).DAY=DAY-1
〖第8题〗(练习题所在文件夹:
175)
*题目:
打开XSDB.DBF数据表,分别统计男、女生的人数。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
USEXSDB
STOR0TOB,G
DOWHILE.NOT.EOF()
***********FOUND**********
IF性别<>男
B=B+1
***********FOUND**********
ENDIF
G=G+1
ENDIF
SKIP
ENDDO
?
"男生人数是:
"+STR(B)
?
"女生人数是:
"+STR(G)
答案:
1).IF性别="男"或IF性别<>"女"
2).ELSE
〖第9题〗(练习题所在文件夹:
188)
*题目:
显示XSDB.DBF中每个学生的姓名、计算机成绩和等级;等
*级划分如下:
计算机成绩大于等于90显示"优秀";60到89
*(包括60和89)之间显示"及格";60分以下显示"补考"。
*如显示:
张丽娜90优秀。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
USEXSDB
DOWHIL.NOT.EOF()
***********FOUND**********
LIST姓名,计算机
DOCASE
CASE计算机>=90
?
?
'优秀'
CASE计算机>=60
?
?
'及格'
OTHERWISE
?
?
'补考'
ENDCASE
***********FOUND**********
GONEXT
ENDDO
USE
答案:
1).?
姓名,计算机或DISPLAY姓名,计算机
2).SKIP或SKIP1
〖第10题〗(练习题所在文件夹:
191)
*题目:
从键盘上输入5个数,将其中奇数求和,偶数求积。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
S1=0
***********FOUND**********
S2=0
FORI=1TO5
INPUT"请输入第"+STR(I,1)+"数"TOM
***********FOUND**********
IFINT(M/2)=0
S1=S1+M
ELSE
S2=S2*M
ENDIF
ENDFOR
?
"奇数和是",S1
?
"偶数积是",S2
答案:
1).S2=1或STOR1TOS2
2).IFMOD(M,2)<>0或IFMOD(M,2)#0或IFINT(M/2)<>M/2或IFINT(M/2)#M/2或IFM%2<>0或IFM%2!
=0或IFM%2#0
〖第11题〗(练习题所在文件夹:
182)
*题目:
在XSDB.DBF中查找学生徐秋实的记录,如果找到则将该记录
*的系别、姓名,两科科目名称和对应的成绩显示在屏幕上,否则
*显示:
"查无此人!
"。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
USEXSDB
***********FOUND**********
FINDFOR姓名="徐秋实"
IF.NOT.FOUND()
?
"查无此人!
"
ELSE
***********FOUND**********
?
系别,姓名,"计算机="+计算机,"英语="+英语
ENDIF
USE
RETURN
答案:
1).LOCATEFOR姓名="徐秋实"或LOCATEALLFOR姓名="徐秋实"
2).?
系别,姓名,"计算机="+STR(计算机),"英语="+STR(英语)
或?
系别,姓名,"计算机=",计算机,"英语=",英语
〖第13题〗(练习题所在文件夹:
161)
*题目:
从键盘输入一个表名,打开该表文件,移动记录指针到
*文件头,输出当前记录号;在移动记录指针到文件尾,
*输出当前记录号。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
SETTALKOFF
ACCEPTTOA
**********FOUND**********
FINDA
GOTOP
**********FOUND**********
NEXT
?
RECNO()
GOBOTTOM
**********FOUND**********
NEXT-1
?
RECNO()
USE
SETTALKON
答案:
1).USE(A)或USE&A
2).SKIP-1
3).SKIP或SKIP1
〖第14题〗(练习题所在文件夹:
162)
*题目:
从键盘输入一个表文件名,打开该表,查找"姓名"是
*"张东"的记录,并显示该记录,最后输出"姓名"是"张
*东"的记录个数。
(设被打开的表中有固定字段"姓名")
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
SETTALKOFF
ACCEPTTOA
USE&A
**********FOUND**********
N=1
SCANFOR姓名="张东"
**********FOUND**********
LIST
N=N+1
ENDSCAN
**********FOUND**********
?
记录个数是,N
USE
SETTALKON
答案:
1).N=0或Store0ToN
2).DISPLAY或DISP
3).?
"记录个数是",N或?
"记录个数是",str(N)
〖第16题〗(练习题所在文件夹:
92)
*题目:
求X=1+2+3+…+100,并同时求出1到100之间的奇数之和Y,
*而且显示输出这两个和。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
CLEAR
STORE0TOI,X,Y
***********FOUND**********
DOWHILEI<=100
I=I+1
X=X+I
IFI/2=INT(I/2)
***********FOUND**********
EXIT
ENDIF
Y=Y+I
ENDDO
?
X,Y
RETURN
答案:
1).DOWHILEI<100或DOWHILEI<=99
2).LOOP
〖第17题〗(练习题所在文件夹:
501)
*题目:
STUDENT.DBF是一个学生信息文件,包含学号(C8)、
*姓名(C8)、性别(C2)、政治面貌(C4)、班级(C5)
*等字段;其中性别用字符串"男"或"女"表示,政治面貌
*用字符串"党员"、"团员"或"群众"表示。
*程序的功能是:
显示输出所有政治面貌为"群众"的男生姓
*名和班级。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
settalkoff
clear
USESTUDENT
LOCATEFOR政治面貌="群众"
***********FOUND**********
DOWHILE.not.FOUND()
IF性别="女"
CONTINUE
***********FOUND**********
break
ENDIF
?
姓名,班级
***********FOUND**********
skip
ENDDO
USE
SETTALKON
答案:
1).DOWHILEFOUND()或DOWHIL.not.eof()
2).LOOP
3).CONTINUE
x〖第19题〗(练习题所在文件夹:
148)
*题目:
从键盘上输入任意一串字符,判断是否回文。
*例如:
MUM、456654,MADAM。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
SETTALKOFF
ACCEPT"A="TOA
L=LEN(A)
FLAG=1
I=1
**********FOUND**********
DOWHILEFLAG=1ORI<=INT(L/2)
**********FOUND**********
IFSUBS(A,I,1)<>SUBS(A,L-I,1)
FLAG=0
ENDIF
I=I+1
ENDDO
**********FOUND**********
IFFLAG=0
?
"是回文"
ELSE
?
"不是回文"
ENDIF
CANCEL
答案:
1).DOWHILEFLAG=1ANDI<=INT(L/2)
2).IFSUBSTR(A,I,1)<>SUBSTR(A,L-I+1,1)
3).IFFLAG=1
〖第20题〗(练习题所在文件夹:
189)
*题目:
从键盘输入一个数X,当X大于0、Y的值为1;当X等于0、Y的
*值为0;当X小于0、Y的值为-1,然后输出Y的值。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
INPUT"输入一个数X:
"TOX
***********FOUND**********
IFX>0
IFX>0
Y=1
ELSE
Y=0
ENDIF
ELSE
Y=-1
ENDIF
***********FOUND**********
?
"Y=Y"
答案:
1).IFX>=0或IF0<=X
2).?
"Y=",Y或?
"Y="+STR(Y)
〖第22题〗(练习题所在文件夹:
505)
*题目:
计算并显示输出数列1,-1/2,1/4,-1/8,1/16…的
*前10项之和。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
settalkoff
clear
Y=0
STORE1TOI,C
***********FOUND**********
DOWHILEI<=10
Y=Y+(-1)^(C+1)/I
***********FOUND**********
I=-I*2
C=C+1
***********FOUND**********
ENDIF
?
"数列前10项之和为:
",Y
SETTALKON
RETURN
答案:
1).DOWHILEC<=10或DOWHILEC<11
2).I=I*2或I=-I*(-2)
3).ENDD或ENDDO
〖第23题〗(练习题所在文件夹:
156)
*题目:
求1+5+9+13+…+97的和。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
SETTALKOFF
S=0
**********FOUND**********
N=0
DOWHILEN<=97
**********FOUND**********
S=S+1
N=N+4
**********FOUND**********
ENDWHILE
?
S
SETTALKON
答案:
1).N=1或STOR1TON
2).S=S+N或S=N+S
3).ENDDO或ENDD
〖第24题〗(练习题所在文件夹:
165)
*题目:
求1到10之间奇数的阶乘和t=1!
+3!
+5!
+…+9!
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
**********FOUND**********
t=1
P=1
I=1
**********FOUND**********
DowhileI>10
P=p*I
**********FOUND**********
Ifint(i/2)=i/2
T=t+p
Endif
I=I+1
Enddo
?
"t=",t
答案:
1).t=0
2).dowhilei<10
3).!
=或<>或#
〖第25题〗(练习题所在文件夹:
168)
*题目:
查找RSH.dbf中女职工的最高工资,并显示其姓名和工资。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
***********FOUND**********
OPENRSH
MGZ=0
DOWHILE.NOT.EOF()
***********FOUND**********
IF性别="女",MGZ<"工资"
MGZ=工资
MXM=姓名
ENDIF
***********FOUND**********
CONT
ENDDO
?
MXM,MGZ
USE
答案:
1).USERSH
2).IF性别="女".and.MGZ<工资
3).SKIP
x〖第26题〗(练习题所在文件夹:
154)
*题目:
以下程序输出如下图所示的图形。
*!
$!
*!
$!
$!
$
*!
$!
$!
*!
$!
$!
$!
$!
$
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
SETTALKOFF
I=4
DOWHILEI<10
**********FOUND**********
IFINT(I/2)=I/2
I=I*2
ELSE
I=I-1
ENDIF
FORJ=1TOI
**********FOUND**********
IFJ/2=0
?
?
"!
"
ELSE
?
?
"$"
**********FOUND**********
ENDDO
ENDFOR
?
ENDDO
RETURN
答案:
1).IFINT(I/2)<>I/2或IFMOD(I,2)=1或IFI%2=1
2).IFJ%2=1或IFmod(j,2)=1
3).ENDIF或ENDI
〖第27题〗(练习题所在文件夹:
190)
*题目:
计算出1到50以内(包含50)能被2和3整除的数之和。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
STOR0TOX,Y
***********FOUND**********
DOWHILENOTEOF()
X=X+1
DOCASE
***********FOUND**********
CASEMOD(X,2)=0orMOD(X,3)=0
Y=Y+X
CASEX<=50
***********FOUND**********
X=X+1
CASEX>50
EXIT
ENDCASE
ENDDO
?
Y
答案:
1).DOWHILE.T.
2).and
3).LOOP
〖第29题〗(练习题所在文件夹:
196)
*题目:
分别统计化学系的男、女生总人数并显示出来。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
USEXSDB
STOR0TORS1,RS2
***********FOUND**********
FINDFOR系别="化学"
DOWHILE.NOT.EOF()
***********FOUND**********
IF性别<>"男"
RS1=RS1+1
ELSE
RS2=RS2+1
ENDIF
CONT
ENDDO
?
"男生人数=",RS1
?
"女生人数=",RS2
USE
答案:
1).LOCATEFOR系别="化学"或LOCATEALLFOR系别="化学"
2).IF性别="男"或IF性别<>"女"
〖第30题〗(练习题所在文件夹:
187)
*题目:
从键盘输入十个非零整数,统计能被3整除的数的个数。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
STORE0TOI,A
***********FOUND**********
DOWHILEI<=10
INPUT"请输入一个整数:
"TON
***********FOUND**********
IFMOD(N/3)=0
A=A+1
ENDIF
I=I+1
ENDDO
?
A
答案:
1).DOWHILEI<10或DOWHILEI<=9
2).IFMOD(N,3)=0或IN%3=0或IFINT(N/3)=N/3
〖第31题〗(练习题所在文件夹:
152)
*题目:
从键盘上输入5个数,统计其中奇数的个数。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。
SETTALKOFF
A=0
FORJ=1TO5
**********FOUND**********
ACCEPT"请输入第"+STR(J,2)+"数"TOM
**********FOUND**********
IFINT(M/2)=M/2
A=A+1
ENDIF
ENDFOR
**********FOUND**********
?
奇数个数是,A
CANCEL
答案:
1).INPUT"请输入第"+STR(J,2)+"数"TOM
2).IFINT(M/2)#M/2或IFINT(M/2)!
=M/2或IFINT(M/2)<>M/2
3).?
"奇数个数是",A或?
'奇数个数是',str(A)
〖第32题〗(练习题所在文件夹:
157)
*题目:
求2!
+4!
+6!
+…+10!
的和。
*注意:
不可以增加或删除程序行,也不可以更改程序的结构。