VFP程序改错.docx

上传人:b****8 文档编号:9325463 上传时间:2023-02-04 格式:DOCX 页数:97 大小:46.78KB
下载 相关 举报
VFP程序改错.docx_第1页
第1页 / 共97页
VFP程序改错.docx_第2页
第2页 / 共97页
VFP程序改错.docx_第3页
第3页 / 共97页
VFP程序改错.docx_第4页
第4页 / 共97页
VFP程序改错.docx_第5页
第5页 / 共97页
点击查看更多>>
下载资源
资源描述

VFP程序改错.docx

《VFP程序改错.docx》由会员分享,可在线阅读,更多相关《VFP程序改错.docx(97页珍藏版)》请在冰豆网上搜索。

VFP程序改错.docx

VFP程序改错

*题目:

表XSDA.DBF结构为:

学号(C,6),姓名(C,6),性别(C,2),入学成绩(N,6,2)。

本程序复制表XSDA的记录到表XS1中,在表XS1中查找入学成绩550分以上的同学,将其删除并浏览XS1的内容。

SETTALKOFF

USEXSDA

**********FOUND**********

COPYSTRUCTURETOXSDA

USEXS1

**********FOUND**********

LOCATEALL入学成绩>=550

DOWHILEFOUND()

DELETE

**********FOUND**********

LOOP

ENDDO

PACK

BROW

USE

SETTALKON

答案:

1).COPY★TO★XS1

2).★LOCATE★ALL★FOR入学成绩>=550或★LOCATE★ALL★FOR550★<=入学成绩

3).CONTINUE

 

*题目:

输入10,计算s=1+1+2+1+2+3+...+1+2+3+4+...+10

*请在屏幕上输出结果。

settalkoff

clear

***********FOUND**********

s=p=0

fori=1to10

***********FOUND**********

p=p-i

s=s+p

endf

***********FOUND**********

?

"p=",p

答案:

1).store★0★to★s,p或store★0★to★p,s

2).p=★p★+★i或p=i★+★p

3).?

★"★s=★",s或?

★s或?

★"p=",★s

 

*题目:

已有数据库dat.dbf,其中有data1--data7、最大数、最小数和平均数等字段。

请考生编写程序MODI1.PRG,其功能是按记录求出data1--data7七个数中的最大数、最小数和平均数,并记入数据库的相应字段中,最后把结果输出到data1.dbf文件中

SETTALKON

SETTALKOFF

CLEAR

USEDAT

***********FOUND**********

DOWHILEFOUND()

AV_NUM=(DATA1+DATA2+DATA3+DATA4+DATA5+DATA6+DATA7)/7

MAX_NUM=MAX(DATA1,MAX(DATA2,MAX(DATA3,MAX(DATA4,MAX(DATA5,MAX(DATA6,DATA7))))))

MIN_NUM=MIN(DATA1,MIN(DATA2,MIN(DATA3,MIN(DATA4,MIN(DATA5,MIN(DATA6,DATA7))))))

***********FOUND**********

REPLALL最大数WITHMAX_NUM,最小数WITHMIN_NUM,平均数WITHAV_NUM

***********FOUND**********

cont

ENDDO

COPYTODATA1

usedata1

list

USE

SETTALKON

答案:

1).DO★WHILE★.NOT.★EOF()

2).RE★PL最大数★WITH★MAX_NUM,最小数★WITH★MIN_NUM,平均数★WITH★AV_NUM

3).SKIP

 

*题目:

给定程序MODI1.PRG的功能是:

选择最小号空闲区,若最小号空闲区号大于1,说明系统当前已有工作区被占用,在这种情况下,测试最小号空闲工作区的前一个工作区打开的数据库文件名,该数据库的字段数和记录数。

注:

假设字段数和记录数均小于10。

SETTALKOFF

SELECT1

USEDB2

SELECT2

USEDB1

***********FOUND**********

selectX

A=SELECT()

?

A

WAIT

IFA>1

SELECT(A-1)

FILENAME=ALIAS()

***********FOUND**********

SUMFIELDTOfnum

***********FOUND**********

SUMTORECNUM

CLEAR

@6,6SAY"在"+STR((A-1),1)+"区中已经打开了:

"+FILENAME

@7,6SAY"该数据库中的字段数是:

"+STR(FNUM,1)

@8,6SAY"该数据库中的记录数是:

"+STR(RECNUM,1)

ENDIF

CLOSEDATA

SETTALKON

RETURN

答案:

1).SELECT★0

2).store★fcount()★to★fnum或FNUM★=★FCOUNT()

3).counttorecnum

 

*题目:

STUDENT.DBF是一个学生信息文件,包含学号(C8)、姓名(C8)、性别(C2)、政治面目(C4)、班级(C5)等字段;其中性别用字符串"男"或"女"表示,政治面目用字符串"党员"、"团员"或"群众"表示。

程序MODI1.PRG的功能是:

显示输出所有政治面目为"群众"的男生姓名和班级。

settalkoff

clear

USESTUDENT

LOCATEFOR政治面目="群众"

***********FOUND**********

DOWHILE.not.FOUND()

IF性别="女"

CONTINUE

***********FOUND**********

break

ENDIF

?

姓名,班级

***********FOUND**********

skip

ENDDO

USE

SETTALKON

答案:

1).DO★WHIL★EFOU★ND()

2).LOOP

3).CONTINUE

 

*题目:

有结构相同的三个班学生数据库STD1.DBF、STD2.DBF、STD3.DBF。

其中学号的前两位是学生所在班级号。

一个统计数据库TJ.DBF,其结构包括七个字段:

班级C

(2)、男、女、党员、团员、群众、少数民族,后六个均为数值型字段N(3,0)。

请编写统计程序MODI1.PRG,按班对学生数据进行的性别、政治面目和民族统计,并将统计结果存放到TJ.DBF中。

(不得修改学生数据库)

settalkoff

sele1

usestd1

sele2

usestd2

sele3

usestd3

sele4

usetj

zap

sele1

***********FOUND**********

banji=学号

countallfor性别="男"toman

countallfor性别="女"towoman

countallfor民族<>"汉"tominzu

countallfor政治面目="党员"todangyuan

countallfor政治面目="团员"totuanyuan

countallfor政治面目="群众"toquanzhong

sele4

appeblan

repl班级withbanji,男withman,女withwoman,党员withdangyuan,团员withtuanyuan,群众withquanzhong,少数民族withminzu

sele2

banji=left(学号,2)

countallfor性别="男"toman

countallfor性别="女"towoman

countallfor民族<>"汉"tominzu

countallfor政治面目="党员"todangyuan

countallfor政治面目="团员"totuanyuan

countallfor政治面目="群众"toquanzhong

sele4

appeblan

repl班级withbanji,男withman,女withwoman,党员withdangyuan,团员withtuanyuan,群众withquanzhong,少数民族withminzu

***********FOUND**********

sele1

banji=left(学号,2)

countallfor性别="男"toman

countallfor性别="女"towoman

countallfor民族<>"汉"tominzu

countallfor政治面目="党员"todangyuan

countallfor政治面目="团员"totuanyuan

countallfor政治面目="群众"toquanzhong

sele4

***********FOUND**********

appe

repl班级withbanji,男withman,女withwoman,党员withdangyuan,团员withtuanyuan,群众withquanzhong,少数民族withminzu

closedatabase

settalkon

return

答案:

1).banji=★left★(学号,2)或banji=★subs★(学号,1,2)或banji=★'01'

2).sele★3或sele★c

3).appe★blank

 

*题目:

分别统计化学系的男、女生总人数并显示出来。

USEXSDB

STOR0TORS1,RS2

***********FOUND**********

FINDFOR系别="化学"

DOWHILE.NOT.EOF()

***********FOUND**********

IF性别<>"男"

RS1=RS1+1

ELSE

RS2=RS2+1

ENDIF

CONT

ENDDO

?

"男生人数=",RS1

?

"女生人数=",RS2

USE

答案:

1).LOCATE★FOR★系别★=★"化学"或LOCATE★ALL★FOR★系别★=★"化学"或LOCATE★FOR★系别★=★[化学]或LOCATE★ALL★FOR★系别★=★[化学]

2).IF性别★=★"男"或IF性别<>★"女"或IF性别★#★"女"或IF性别★=★[男]或IF性别<>★[女]或IF性别★#★[女]

 

*题目:

有如下数据库文件:

ZY.DBF:

职员号N(3,0),姓名C(6),性别C

(2),职务C(10);DD.DBF:

订单号N(3,0),客户号N(3,0),职员号N(3,0),签订日期D(8),金额N(6,2)。

给定程序MODI1.PRG的功能是:

根据客户号查询该客户的有关订单信息,结果按订单金额降序排序,并显示这些定单的总金额。

修改并调试该程序,使之正确运行。

SETTALKOFF

SETSAFETYOFF

SELECT1

USEzy

INDEXON职员号TOzyi

SELECT2

USEdd

INDEXON-金额TOddi

***********FOUND**********

SETRELATIONON-金额TOA

DOWHILE.T.

CLEAR

KH=202

?

"请输入客户号:

",kh

?

LOCATEFOR客户号=kh

***********FOUND**********

IF.NOT.EOF()

?

"没有该客户!

"

ELSE

?

"订单号"+"职员"+SPACE(5)+"签订日期"+"金额"

?

s=0

DOWHILE!

EOF()

?

STR(订单号,3)+SPACE(5)+A->姓名+SPACE(5)+DTOC(签订日期)+""+STR(金额,6,2)

***********FOUND**********

s=金额

CONTINUE

ENDDO

?

?

"总金额为:

"+STR(s,8,2)

ENDIF

?

WAIT"继续查询吗(Y/N)?

"TOp

IF!

UPPER(p)="Y"

EXIT

ENDIF

ENDDO

CLOSEDATA

SETSAFETYON

SETTALKON

答案:

1).SET★RELA★TO★职员号★INTO★A或SET★RELA★TO★职员号★INTO★zy

2).IFEOF()或IF★.NOT★.FOUND()

3).s=★s+金额或s=金额★+s或STOR★s+金额★TO★s或STOR★金额+s★TO★s

 

*题目:

在XSDB.DBF中查找学生徐秋实的记录,如果找到则将该记录的系别、姓名,两科科目名称和对应的成绩显示在屏幕上,否则显示:

"查无此人!

"。

USEXSDB

***********FOUND**********

FINDFOR姓名="徐秋实"

IF.NOT.FOUND()

?

"查无此人!

"

ELSE

***********FOUND**********

?

系别,姓名,"计算机="+计算机,"英语="+英语

ENDIF

USE

RETURN

答案:

1).LOCATE★FOR★姓名="徐秋实"或LOCATE★ALL★FOR★姓名="徐秋实"或LOCATE★FOR★姓名=[徐秋实]或LOCATE★ALL★FOR★姓名=[徐秋实]

2).?

系别,姓名,"计算机="+★STR★(计算机),"英语="+★STR★(英语)或?

系别,姓名,"计算机=★",计算机,"英语=★",英语或?

系别,姓名,"计算机="+★STR★(计算机,3),"英语="+★STR★(英语,3)或?

系别,姓名,[计算机=]+★STR★(计算机),[英语=]+★STR★(英语)或?

系别,姓名,[计算机=★],计算机,[英语=★],英语或?

系别,姓名,[计算机=]+★STR★(计算机,3),[英语=]+★STR★(英语,3)

 

*题目:

STUDENT.DBF是一个学生信息文件,其中包含学号(C8)、姓名(C8)等字段,而且已按学号建立了索引,索引文件名是STUDENT.IDX;文件SCORE.DBF是成绩文件,其中包含学号(C8)、课程名(C20)、成绩(N5.1)等字段,而且已按课程名建立了索引,索引文件名是SCORE1.IDX。

程序MODI1.PRG的功能是:

显示输出选修"数据结构"课程的学生姓名和成绩,每个成绩输出一行,包括学生的姓名和成绩;

settalkoff

clear

SELECT3

USESTUDENTINDEXSTUDENT

SELECT4

USESCOREINDEXSCORE1

SEEK"数据结构"

***********FOUND**********

DOWHILE!

EOF()

SELECTSTUDENT

***********FOUND**********

SEEK学号

?

姓名+":

"

SELECTSCORE

?

?

成绩

***********FOUND**********

next1&&

ENDDO

CLOSEDATA

SETTALKON

答案:

1).DO★WHILE★课程名="数据结构"

2).SEEK★SCORE->学号或SCORE.学号或D->学号或D.学号

3).skip

*题目:

将200到300之间的所有能被3整除或被5整除的数求和并统计个数。

STORE0TOS,C

I=200

DOWHILEI<=300

***********FOUND**********

IFINT(I/3)=INT(I/5)

S=S+I

***********FOUND**********

C=C+I

ENDIF

I=I+1

ENDDO

?

"200到300之间的所有能被3整除或被5整除的数之和="+STR(S,6)

?

"200到300之间的所有能被3整除或被5整除的数的个数="+STR(C,6)

答案:

1).IFINT(I/3)★=I/3★.OR.★INT(I/5)=★I/5或IFMOD(I,3)=0★.OR.★MOD(I,5)=0或IFINT(I/5)=I/5★.OR.★INT(I/3)=I/3或IFMOD(I,5)=0★.OR.★MOD(I,3)=0或IFINT(I/3)=★I/3★OR★INT(I/5)=I/5或IFMOD(I,3)=0★OR★MOD(I,5)=0或IFINT(I/5)=I/5★OR★INT(I/3)=I/3或IFMOD(I,5)=0★OR★MOD(I,3)=0

2).C=★1+C或C=★C+1或STOR★C★+★1★TO★C

 

*题目:

打开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性别<>★"女"或IF性别★#★"女"或IF性别★=★[男]或IF性别<>★[女]或IF性别★#★[女]

2).ELSE

 

*题目:

该程序完成口令检验功能。

输入三次不正确退出。

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)或IF★UPPER★(ass1)★==★UPPER★(ass)

2).EXIT

3).TT=★TT★+★1或TT=★1+TT

 

*题目:

打印由数字组成的图形,要求第一行空10个空格打印5个1,第二行空11个空格打印5个2…,图形如下:

*11111

*22222

*33333

*44444

*55555

CLEA

FORI=1TO5

***********FOUND**********

?

SPAC(9-I)

FORJ=1TO5

***********FOUND**********

?

?

STR(J,1)

ENDFOR

ENDFOR

答案:

1).?

SPAC★(9+I)或?

SPACE★(9+I)

2).?

?

STR★(I,1)

 

*题目:

从键盘上输入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或?

"奇数和是",S1

?

"偶数积是",S2或?

"偶数积是",S2

答案:

1).S2=1或STOR1TOS2

2).IFMOD(M,2)<>0或IFMOD(M,2)#0或IFINT(M/2)★<>★M/2或IFINT(M/2)★#★M/2

 

*题目:

现已有两个数据库文件ZG.DBF和DW.DBF。

给定程序MODI.PRG的功能是:

显示两个数据库文件中职工号一样的相应记录的相关信息。

SETTALKOFF

SETSAFETYOFF

CLEAR

SELECT1

USEDW

SELECT2

USEZG

***********FOUND**********

INDEXON职工号INTOZGH

SELE1

***********FOUND**********

SETRELATIONON职工号INTOB

LOCATEFOR职工号=B->职工号

DOWHILEFOUND()

DISPLAY职工号,姓名,B->基本工资,单位,性质

***********FOUND**********

SKIP

ENDDO

CLOSEDATABASE

RETURN

案:

1).INDE★ON★职工★号TO★ZGH或INDE★TO★Z★GHON★职工号

2).SET★REL★ATO★职工号★INTO★B或SET★RELA★TO★职工号★INTO★ZG

3).CONT

 

*题目:

将s所指字符串中出现的、t1所指子串全部替换成t2所指子字符串,所形成的新串放在s所指的字符串中。

在此处,要求t1和t2所指字符串的长度相同。

例如,当s所指字符串中的内容为:

"abcdabfab",t1所指子串中的内容为:

"ab",t2所指子串中的内容为:

"99"时,结果,在w所指的数组中的内容应为:

"99cd99f99"。

settalkoff

clear

s="abcdabfab"

t1="ab"

t2="99"

p=""

i=1

***********FOUND**********

dowhilei=len(s)-3

ift1=subs(s,i,2)

***********FOUND**********

s=stuff(s,i,2,t1)

endif

***********FOUND**********

skip

endd

?

"s=",s

答案:

1).do★while★i<★=len(s)-★1或do★while★i<★=len(s)或do★while★i<★len(s)

2).s=stuff(s,i,2,★t2)

3).i=i+1或i=1+i

 

*题目:

已有数据库stuck.dbf,包括商品号、商品名、单价和数量等字段。

请考生编写程序modi1.PRG,其功能是给该数据库增加一个总额(N,10.2)字段,并填入数据,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1