全国计算机等级二级FOX上机编程题题型

第一题:有计算机等级考试数据库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_TYPE WITH '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文件中。(资料来源:Http: //www.eastedu.com.cn)
  
   参考答案:
  SET TALK OFF
  CLOSE DATABASE
  CLEAR
  USE STOCK
  COPY STRUCTURE TO STO EXTENDED
  USE STO
  APPEN BLANK
  REPL FIELD_NAME WITH "总金额",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,笔试平均分 WITH BS1/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

更多等考咨询请进入:http://ncre.educity.cn/