|
第一题:有计算机等级考试数据库djks.dbf,包括:考号、姓名、性别、年龄和单位等字段;成绩数据库cj.dbf,包括:考号、考场编号、笔试成绩和上机成绩等字段。 请考生编写程序 PROG1.PRG,其功能是其考号、单位、笔试成绩和上机成绩共四个字段。然后在生成的连接数据库中按单位对笔试和上机成绩进行分类汇总,存入数据库qaz.dbf文件中。
参考答案: SET TALK OFF CLEAR SELE B USE CJ SELE A USE DJKS JOIN WITH B TO CJ1 FOR 考号=B->考号 FIELD ?考号,单位,B->笔试成绩,B->上机成绩
SELE C USE CJ1 SORT ON 单位 TO CJ2 USE CJ2 TOTAL ON 单位 TO QAZ USE QAZ LIST CLOSE DATABASE @ 10,30 SAY "再见!" SET TALK ON 第二题:已有三个数据库:⑴借阅数据库jy.dbf,包括图书编号、借书证号、借书日期和借出天数等字段; ⑵读者数据库dzh.dbf,包括借书证号、姓名、停借否等字段;⑶停借数据库tj.dbf,包括借书证号、姓名等字段。 请考生编写程序 PROG1.PRG,其功能是整理图书借出情况:首先在借阅数据库中用当前日期减去借书日期得出借出天数,然后进行判定处理,凡借书超过60天(不含60天)者,就把读者数据库中的停借否字段置为逻辑真,并在停借数据库中产生一条记录。(注意:假定当前日期为2000年9月1日)
参考答案: SET TALK OFF SET CENTURY ON CLEAR SELE C USE TJ SELE B USE DZH REPL ALL 停借否 WITH .F. SELE A USE JY DO WHILE .NOT. EOF() JSZ=借书证号 REPL 借出天数 WITH DATE()-借书日期 IF 借出天数>60
SELE B LOCA FOR 借书证号=JSZ REPL 停借否 WITH .T. SCATTER TO TJF SELE C APPE BLANK GATHER FROM TJF SELE A ENDIF SKIP ENDDO SELE C LIST CLOSE ALL CLEAR ALL SET TALK ON
第三题:已有数据库data.dbf,其中有data1--data7、最大数、最小数和平均数等字段。 请考生编写程序PROG1.PRG,其功能是按记录求出data1--data7七个数中的最大数、最小数和平均数,并记入数据库的相应字段中,最后把结果输出到data1.dbf文件中。
参考答案: SET TALK OFF CLEAR USE DATA DO WHILE .NOT. EOF() 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)))))) REPL 最大数 WITH MAX_NUM,最小数 WITH MIN_NUM,平均数 WITH AV_NUM
SKIP ENDDO BROW COPY TO DATA1 USE SET TALK ON 第四题:已有数据库djks.dbf。请编写程序PROG1.PRG,在程序中首先通过复制djks.dbf生成一个具有考号、 姓名、笔试及上机四个字段的数据库文件aaa.dbf(只有结构),然后再修改其结构,把考号字段改为数值型8个字符宽、姓名字段改为8个字符宽。要求必须使用: copy to <结构文件名> structure extended 和 create <生成库文件名> from <结构文件名>命令实现,使用其它方法不得分 =版权所有 软件 下载 学院 版权所有= 参考答案: set talk off clos data use djks copy stru to aaa fiel 考号,姓名,笔试,上机 USE AAA COPY STRU TO BBB EXTENDED USE BBB LOCA FOR FIELD_NAME='考号' REPL FIELD_TYPEWITH 'N',FIELD_LEN WITH 8
LOCA FOR FIELD_NAME='姓名' REPL FIELD_LEN WITH 8 CREATE AAA FROM BBB clos data set talk on
第五题:已有数据库stock.dbf,包括商品号、商品名、单价和数量等字段。请考生编写程序PROG1.PRG,其功能是给该数据库增加一个总额(N, 10.2)字段,并填入数据,其值为数量与单价之乘积,最后把结果复制到stock1.dbf文件中。
参考答案: SET TALK OFF CLOSE DATABASE CLEAR USE STOCK COPY STRUCTURE TO STO EXTENDED USE STO APPEN BLANK REPL FIELD_NAMEWITH "总金额",FIELD_TYPE WITH "N",FIELD_LEN ?WITH 10,FIELD_DEC WITH 2
CREATE STOCK1 FROM STO USE STOCK1 APPE FROM STOCK REPL ALL 总金额 WITH 数量*单价 LIST USE SET TALK ON 第六题:已有计算机等级考试数据库djks.dbf,包括:考号、姓名、笔试成绩、上机成绩和平均成绩等字段,但各成绩字段为空;另有成绩数据库cj.dbf,包括:考号、考场编号、笔试成绩和上机成绩等字段, 考生的考试成绩已录入其中。 请编写程序 PROG1.PRG,要求把考生的考试成绩填写到数据库djks.dbf中,然后再计算笔试和上机成绩的平均成绩,填入各记录的平均成绩字段中。最后生成一个与djks.dbf结构完全相同的不及格数据库bjg.dbf,把平均成绩不及格的考生记录移入不及格库。
参考答案: SET TALK OFF SET DELETED OFF CLEAR SELE B USE CJ SELE A USE DJKS INDEX ON 考号 TO DJKS UPDATE ON 考号 FROM B REPLACE 笔试成绩 WITH B->笔试成绩,上机成绩 ?WITH B->上机成绩 RANDOM
GO TOP REPLACE ALL 平均成绩 WITH (笔试成绩+上机成绩)/2 COPY TO BJG FOR 平均成绩<60
LIST USE BJG LIST CLOSE DATABASE SET TALK ON 第七题:请考生编写程序 PROG1.PRG,其功能是计算下列多值函数的值: ┌ABS(x) x<0
├ex 0<=x<1
y=├x2 1<=x<3
└INT(x) x>=3
计算的数据都存放在数据库shj.dbf中,该数据库只有两个字段:X(N,4.1)和Y(N,6.4)。在程序中读取字段X的数据,然后把计算结果存放在字段Y中, 最后把shj.dbf所有记录复制到shj1.dbf文件中
参考答案: SET TALK OFF USE SHJ do while .not. eof() X1=X DO CASE CASE X1<0
Y1=ABS(X1) CASE X1>=0 .AND. X<1
Y1=EXP(X1) CASE X>=1 .AND. X<3
Y1=X1*X1 OTHERWISE Y1=INT(X1) ENDCASE REPLACE Y WITH Y1 SKIP enddo LIST COPY TO SHJ1 CLOSE DATABASE SET TALK ON 第八题:请考生编写程序 PROG1.PRG,其功能是计算数学公式: S=1-1/3!+1/5!-1/7!+1/9!-1/11!+...-1/(2n-1)!n 值存放在数据库shj.dbf中,该数据库只有两个字段:N(n,2.0)和S(n,17.15)。执行程序时到数据库中逐个读取N值,再把计算结果存放在S字段中, 最后把shj.dbf所有记录复制到shj1.dbf文件中。
参考答案: SET TALK OFF USE SHJ DO WHILE .NOT. EOF() STORE N TO NJ2 NJ2=2*NJ2-1 JC=1 S1=0 NJ1=1 NJ3=1 DO WHILE NJ1<=NJ2
jc=jc*nj1 if mod(nj1,2)=1 IF MOD(NJ3,2)=1 S1=S1+(1/jc) ELSE S1=S1-(1/JC) ENDIF NJ3=NJ3+1 endif NJ1=NJ1+1 ENDDO REPLACE S WITH S1 SKIP ENDDO COPY TO SHJ1 CLOSE DATABASE SET TALK ON
第九题:有计算机等级考试成绩数据库cj.dbf,包括考号、笔试成绩和上机成绩等字段,其中考号的前两位是单位编码;还有统计数据库tj.dbf,包括单位编码、笔试平均分、上机平均分、笔试最高分、上机最高分等字段。 请编写程序 PROG1.PRG,其功能是:按单位进行各项统计,结果存于统计数据库tj.dbf的相应字段中。
参考答案: SET TALK OFF SET SAFETY OFF CLOSE DATABASE CLEAR SELE 2 USE TJ ZAP SELE 1 USE CJ SORT ON 考号 TO CJ1 USE CJ1 DO WHILE .NOT. EOF() STORE 0 TO BS1,SJ1,BSMAX,SJMAX DWCODE=SUBSTR(考号,1,2) N1=0 BSMAX=笔试成绩 SJMAX=上机成绩 DO WHILE 考号=DWCODE IF 上机成绩>SJMAX
SJMAX=上机成绩 ENDIF IF 笔试成绩>BSMAX
BSMAX=笔试成绩 ENDIF BS1=BS1+笔试成绩 SJ1=SJ1+上机成绩 N1=N1+1 SKIP ENDDO SELE 2 APPEND BLANK REPLACE 单位编码WITH DWCODE,笔试平均分 WITHBS1/N1,上机平均分 WITH ; SJ1/N1,笔试最高分 WITH BSMAX, 上机最高分 WITH SJMAX
SELE 1 ENDDO SELE 2 LIST CLOSE DATABASE SET TALK ON SET SAFETY ON 第十题:已有计算机等级考试数据库djks.dbf,包括:考号、姓名、笔试成绩、上机成绩和平均成绩等字段,其中考号的前两位是单位代码;另有单位数据库dw.dbf,包括:单位代码、单位名称、人数和总平均分等字段。 请编写程序 PROG1.PRG,要求先在djks.dbf数据库中计算各位考生的平均成绩,并填入平均成绩字段中。然后按单位统计人数及总平均分,记入dw.dbf数据库的相应字段中,最后把dw.dbf所有记录复制到dw1.dbf文件中。
参考答案: SET TALK OFF SELE 2 USE DW SELE 1 USE DJKS DO WHILE .NOT. EOF() REPLACE 平均成绩 WITH (笔试成绩+上机成绩)/2 SKIP ENDDO SORT ON 考号 TO DJKS1 USE DJKS1 DO WHILE .NOT. EOF() DW1=SUBSTR(考号,1,2) STORE 0 TO PEOPLE,AV_SCOR DO WHILE SUBSTR(考号,1,2)=DW1 AV_SCOR=AV_SCOR+平均成绩 PEOPLE=PEOPLE+1 SKIP ENDDO SELE 2 LOCA FOR 单位代码=DW1 REPL 人数 WITH PEOPLE,总平均分 WITH AV_SCOR/PEOPLE =版权所有 软件 下载 学院 版权所有= SELE 1 ENDDO SELE 2 COPY TO DW1 LIST CLOSE DATABASE SET TALK ON
|