浙江财经学院vfp改错题题目.docx
《浙江财经学院vfp改错题题目.docx》由会员分享,可在线阅读,更多相关《浙江财经学院vfp改错题题目.docx(22页珍藏版)》请在冰豆网上搜索。
浙江财经学院vfp改错题题目
25、本程序在屏幕上显示如下图形:
1
12
123
1234
12345
SETTALKOFF
CLEA
K=1
DOWHILK<=5
C=1
******1******
DOWHILC<=5
******2******
?
C
C=C+1
ENDDO
?
******3******
K=K-1
ENDDO
SETTALKON
24.本程序用于输入一个表名,若表存在则打开表,并显示其各个字段名。
说明:
******N******标注的下一句有错,改正错误并调试运行。
不能删除******N******。
SETTALKOFF
CLEAR
DOWHILE.T.
ACCEPT"请输入表名:
(不含扩展名)"TOFNAME
******1******
IF.NOT.FILE(FNAME)
WAIT"此表不存在!
"
ELSE
USE&FNAME
ZDSM=FCOUNT()
******2******
?
"此表中的字段有:
"+ZDSM+"个"
FORI=1TOZDSM
?
STR(I)+""
******3******
?
?
NAME(I)
ENDFOR
ENDIF
WAIT"继续否?
(Y/N)"TOYN
IFUPPER(YN)="N"
EXIT
ENDIF
ENDDO
SETTALKON
23、本程序实现指定表指定条件的任意查询功能。
SETTALKOFF
CLEAR
ACCEPT"请输入表名:
(扩展名略)"TOFNAME
******1******
IF.NOT.FILE(FNAME)
WAIT"此表不存在!
"
ELSE
USE(FNAME)
ZDSM=FCOUNT()
?
"此表中的字段有:
"+STR(ZDSM)+"个"
FORI=1TOZDSM
?
STR(I)+""
?
?
FIELD(I)
******2******
ENDDO
ENDIF
ACCEPT"请输入显示表信息的条件表达式:
"TOEXP
******3******
LISTFOREXP
USE
SETTALKON
22、本程序实现:
从键盘输入学生的学号,计算该生的平均成绩,并说明成绩的档次(优、良、中、及格和不及格)。
SETTALKOFF
CLEAR
USE成绩
C="不及格及格中良优"
******1******
INPUT"输入学号="TOXH
LOCATEFOR学号=XH
IFFOUND()
******2******
TOTAL成绩TOCJ
IFCJ<60
R=0
ELSE
R=INT(CJ/10)-5
ENDIF
******3******
DC=STR(C,6)
?
XH,CJ,DC
ELSE
?
'查无此人!
'
ENDIF
USE
SETTALKON
21、本程序用于计算S=1+2+3+…+N的和。
SETTALKOFF
CLEAR
******1******
ACCEPT“N=”TON
S=0
I=0
******2******
DOWHILEI<=N
I=I+1
S=S+I
ENDDO
******3******
?
“1+2+3+…+”+N+”=”+S
SETTALKON
20.、本程序将成绩表中成绩小于60分的学号、课程号及成绩显示出来。
SETTALKOFF
CLEAR
USE成绩
?
'------------------------------------------'
?
'不及格学生名单'
?
'------------------------------------------'
?
'学号课程号成绩'
******1******
GOBOTTOM
DOWHILE.NOT.EOF()
IF成绩<60
******2******
?
学号+SPACE(5)+课程号+SPACE(5)+成绩
ENDIF
SKIP
ENDDO
?
'---------------------------------------------'
******3******
?
'当前日期'+CTOD(DATE())
USE
SETTALKON
19、本程序实现:
输入3个正数,判定是否构成一个三角形,如果构成一个三角形,则返回.T.,否则返回.F.。
另外通过参数的引用将三角形的面积传回。
*主程序
SETTALKOFF
CLEAR
INPUT'X1='TOX1
INPUT'X2='TOX2
INPUT'X3='TOX3
******1******
?
TARER(X1,X2,X3)
?
"三角形面积为:
"+ALLTRIM(STR(X1,19,2))
SETTALKON
*自定义函数
FUNCTIONTARER
******2******
PARAMETERSA,B
******3******
IFA>B>C
S=(A+B+C)/2
A=SQRT(S*(S-A)*(S-B)*(S-C))
RETURN.T.
ELSE
A=0
RETURN.F.
ENDIF
18、本程序比较从键盘输入的若干个数的大小,并输出其中的最大数和最小数。
SETTALKOFF
CLEAR
INPUT‘请输入一个数:
'TOM
******1*****
STORE0TOD,X
DOWHILE.T.
INPUT'请再输入一个数:
'TON
IFDD=N
ENDIF
IFX>N
X=N
ENDIF
YN='A'
******2*****
DOWHILEUPPER(YN)
WAIT'是否继续(Y/N)'TOYN
ENDDO
******3******
IFLOWER(YN)='Y'
EXIT
ENDIF
ENDDO
?
'最大的数是:
',D
?
'最小的数是:
',X
SETTALKON
17、本程序实现:
对输入的正整数,判别其中包含指定数码的个数(如2312132中包含数码1的个数为2)。
SETTALKOFF
CLEAR
INPUT'输入数值='TOM
INPUT'输入数码='TON
YSM=M
S=0
DOWHILE.T.
******1******
Y=MOD(M/10)
IFY=N
S=S+1
ENDIF
******2******
M=INT(M/N)
IFM=0
******3******
LOOP
ENDIF
ENDDO
?
ALLTRIM(STR(YSM,19))+"中包含数码"+STR(N,1)+"共"+ALLTRIM(STR(S,19))+"个。
"
SETTALKON
16、本程序输出一个对角线上元素为0,其它元素为1的6*6阶方阵。
输出时每个元素占2个字符。
SETTALKOFF
CLEAR
******1******
FUNCTIONA(6,6)
FORI=1TO6
FORJ=1TO6
******2******
IFI=J
A(I,J)=0
ELSE
A(I,J)=1
ENDIF
ENDFOR
ENDFOR
FORI=1TO6
FORJ=1TO6
******2******
?
A(I,J)
ENDFOR
?
ENDFOR
SETTALKON
15、对任意一个正数值型数据(该数可有小数若干位,整数部分不超过12位)自动进行小数部分四舍五入取2位,并将其转换为中文大写金额.
SETTALKOFF
CLEAR
C1="零壹贰叁肆伍陆柒捌玖"
C2="分角元拾佰仟万拾佰仟亿拾佰仟"
INPUT'输入一个正数='TOY
******1******
Y=STR(Y,2)
Y=Y*100
I=1
D=SPACE(0)
DOWHILEY>0
P=MOD(Y,10)
******2******
D=SUBSTR(C1,2*P-1,2)+SUBSTR(C2,2*I-1,2)+D
I=I+1
******3******
Y=INT(Y,10)
ENDDO
?
"转换的结果是:
"+D
SETTALKON
14、将给定的正整数的值分解因子,并输出各个质数因子(如24的质数因子有2、2、2和3)(如果一个质数是某个数的约数,那么这个质数是这个数的质数因子)
SETTALKOFF
CLEAR
******1******
ACCEPT'M='TOM
IFINT(M)!
=MORABS(M)!
=M
?
'输入的数据不符合题目要求!
'
******2******
ENDIF
I=2
?
STR(M)+'的质数因子有:
'
DOWHILEI<=M
IFM%I=0
?
?
STR(I,6)
******3******
M=INT(M,I)
LOOP
ENDIF
I=I+1
ENDDO
ENDIF
SETTALKON
13、本程序是在屏幕上打印如下图形:
9876543
98765
987
9
SETTALKOFF
CLEAR
K=1
DOWHILEK<=4
C=1
******1******
DOWHILEC<=4
?
?
STR(10-C,3)
C=C+1
ENDDO
******2******
C=C+1
K=K+1
******3******
ENDFOR
SETTALKON
12、对成绩.DBF(其中包含"学号"字段,并且以"学号"为关键字建立了索引标识“学号”)中学号相同的重复记录进行逻辑删除。
SETTALKOFF
CLEAR
SETDELETEDON
******1******
USE成绩
DOWHILENOTEOF()
XH=学号
SKIP
******2******
DOWHILE.NOT.EOF()
DELETE
******3******
CONTINUE
ENDDO
ENDDO
LIST
USE
SETTALKON
11、本程序输入一个一位数值(0-9),并把它转化为中文大写数字。
SETTALKOFF
CLEAR
X='零壹贰叁肆伍陆柒捌玖'
******1******
DOWHILENOTEOF()
INPUT'N='TON
******2******
S=STUFF(X,N,2)
?
STR(N,1)+"--->"+S
WAIT'是否继续(Y/N)'TOT
******3******
IFUPPER(T)='n'
EXIT
ENDIF
ENDDO
SETTALKON
10、本程序求S=K!
+…+M!
(KSETTALKOFF
CLEAR
INPUT'K='TOK
INPUT'M='TOM
STORE0TOS,A
I=K
DOWHILEI<=M
******1******
DOSUB
******2******
S=S+P
I=I+1
ENDDO
?
S
SETTALKON
PROCSUB
PARAP,N
STOR1TOP,L
******3******
DOWHILEL<=I
P=P*L
L=L+1
ENDDO
RETU
9.本程序用以判断输入的字符串是否是回文(回文是从左到右和从右到左读时都一样的一个字符串,不论大小写字母)。
SETTALKOFF
CLEAR
C=SPACE(0)
ACCEPT'请输入字符串='TOST
******1******
I=LEFT(ST,1)
J=1
DOWHILEJ<=I
Q=SUBST(ST,J,1)
******2******
C=C+Q
J=J+1
ENDDO
******3******
IFST=C
?
ST,'是回文'
ELSE
?
ST,'不是回文'
ENDIF
SETTALKON
8.求3→200之间的素数。
SETTALKOFF
CLEAR
FORM=3TO200
******1******
FORN=1TOM
******2******
IFM/2=INT(M/2)
EXIT
ENDIF
ENDFOR
******3******
IFN>M
?
?
M
ENDIF
ENDFOR
SETTALKON
7.本程序显示下列的九九乘法表
123456789
1
24
369
481216
510152025
61218243036
7142128354249
816243240485664
91827364554637281
SETTALKOFF
CLEAR
FORI=1TO9
******1******
?
I
ENDFOR
I=1
DOWHILEI<=9
?
******2******
FORJ=1TO9
?
?
STR(I*J,4)
ENDFOR
I=I+1
******3******
ENDFOR
SETTALKON
6.程序是显示输出给定行数的对称菱形图案,如下图所示。
SETTALKOFF
CLEAR
INPUT"N="TON&&输入5
FORI=1TON
*******1******
?
SPACE(N-I)
*******2******
FORJ=1TON
?
?
CHR(ASC("A")+I-1)
ENDFOR
ENDFOR
FORP=N-1TO1STEP-1
?
SPACE(N-P+1)
*******2******
FORK=1TO2*N-1
?
?
CHR(ASC('A')+P-1)
ENDFOR
ENDFOR
SETTALKON
5.统计显示“课程”表中所有不同学期考试课和考查课的总学分数。
输出格式如下:
学期考试课总学分考查课总学分
***************************************
1113
settalkoff
clear
use课程
indexon开课学期tokkxq
?
"学期考试课总学分考查课总学分"
?
"*******************************************"
dowhile.not.eof()
xq=开课学期
store0toks,kc
*******1******
dowhile.T.
if考查标志="1"
*******2******
kC=kC+学分数
else
kc=kc+学分数
endif
*******3******
CONTINUE
enddo
?
xq+str(ks,19,2)+str(kc,19,2)
enddo
use
settalkoff
4.输出3~M(M为正整数,从键盘输入)之间的素数和素数的个数。
SETTALKOFF
CLEAR
INPUT"M="TOM
K=0
FORX=3TOM
FORN=2TOX-1
*******1******
IFX/N=0
EXIT
ENDIF
ENDFOR
*******2******
IFN>X
?
?
X
*******3******
K=K+X
ENDIF
ENDFOR
?
"共"+ALLTRIM(STR(K))+"个素数"
SETTALKON
3.用带参调用实现:
M!
/(M-N)!
*N!
SETTALKOFF
CLEAR
INPUT"M="TOM
INPUT"N="TON
MJ=M
*******1******
DOJC
NJ=N
DOJCWITHNJ
*******2******
MNJ=0
DOJCWITHMNJ
?
"S=",MJ/(NJ*MNJ)
SETTALKON
PROCEDUREJC
PARAMETERSX
T=1
FORI=1TOX
T=T*I
ENDFOR
*******3******
X=i
RETURN
2.求x1+x2+x3+x4++xn的值。
n,x从键盘输入。
settalkoff
clear
input"n="ton
input"x="tox
*******1******
s=1
t=1
I=1
DOWHILEI<=n
*******2******
t=s*x
s=s+t
I=I+1
*******3******
endFOR
?
"s=",s
settalkoff
1.求当1!
+3!
+5!
++n!
的值不超过1020时的临界值及n的值。
settalkoff
clear
s=0
n=1
*******1******
dowhileIt=1
fori=1ton
*******2******
t=i*i
endfor
s=s+t
*******3******
n=n+1
enddo
?
"n=",n-4
settalkon