2003VFP程序改错题2-1
更新时间:2024-03-29 10:49:01 阅读量: 综合文库 文档下载
- 2003vfr800推荐度:
- 相关推荐
1.下列程序实现字母转换:输入字符串中出现英文字母均转化为顺序排列在该字母后面的第五个字母(26个字母相接顺序排列).
CLEAR
SET TALK OFF ACCEPT TO B L=LEN(B) C=\
FOR I=1 TO L A=SUBSTR(B,I,1) &&********1*******
A=?? DO CASE CASE A>=\ A=CHR(ASC(A)+5) CASE A>=\ A=CHR(ASC(A)-21) &&*******2********
A=CHR(ASC(A)-26) ENDCASE C=C+A ENDFOR ?B+\SET TALK ON
.2.从键盘输入一个实数M,求出该数的整数位数、小数位数和整体输入位数。 SET TALK OFF CLEAR
INPUT \IF X=0 ?\小数位数为:0,整数位数为:0,\该数的实际输出位数为:1。\ENDIF
ZS=INT(ABS(X)) ZSW=0
DO WHILE ZS>0 ZS=INT(ZS/10) &&********1****** ZS=MOD(ZS/10) ZSW=ZSW+1 ENDDO XSW=0
DO WHILE INT(X)#X
X=X*10 / X=10*X &&********2****** X=MOD(X,10) XSW=XSW+1 ENDDO
FJW=IIF(X<0,1,0)+IIF(XSW=0,0,1)
?\整数位数为:\小数位数为:\?\该数的实际输出位数为:\
SET TALK ON
3..将学生表中的指定学生的奖学金增加100元
学生表:学号(C ),姓名(C),奖学金(N)
SET TALK OFF
CLEAR USE 学生 ACCEPT \请输入学生学号:\
LOCATE FOR 学号=XH / LOCA FOR XH=学号/ LOCATE FOR ALLT(学号)=ALLT(XH) / LOCA FOR ALLT(XH)=ALLT(学号) &&*****1***** SEEK学号=XH IF !EOF()
REPL 奖学金 WITH 100 &&*****2***** REPLACE ALL 奖学金 WITH 100 ?学号,姓名,奖学金 ELSE ?\没有找到!\ ENDIF USE SET TALK ON
4. 判断输入的年份是否是闰年.(能被4整除但不能被100整除,或能被100整除且能被400整除).
SET TALK OFF CLEAR
INPUT ‘Y=’ TOY &&*****1***** ACCEPT \
IF (Y%4=0 AND Y0<>0) OR (Y0=0 AND Y@0=0) /IF (Y%4=0 AND Y0!=0) OR (Y0=0 AND Y@0=0) IF (MOD(Y,4)=0 AND Y0<>0) OR (MOD(Y,100)=0 AND MOD(Y,400)=0)/IF (MOD(Y,4)=0 AND Y0!=0) OR (MOD(Y,100)=0 AND MOD(Y,400)=0) &&*****2***** IF (Y%4 AND Y!0) AND (Y0 AND Y!@0) ?Y,\是闰年!\ELSE
?Y,\不是闰年!\ENDIF
SET TALK ON
5查找学生表中指定班级(如951班)的奖学金总额.
学生.DBF
学号 姓名 性别 奖学金 C,6 C,8 L,1 N,6 SET TALK OFF CLEAR USE 学生
INPUT ?请输入班级? TO BJ
LOCATE FOR LEFT(学号,3)=BJ
******1****** IF EOF()
******2******
SUM 奖学金 TO C
?BJ+?班奖学金总额是:?+STR(C,8,2) ENDIF
SET TALK ON
1. IF !EOF() / IF FOUND() / IF NOT EOF() / IF EOF()=.F. 2. SUM 奖学金 TO C FOR LEFT(学号,3)=BJ/ SUM 奖学金 TO C FOR BJ= LEFT(学号,3)
5. 将键盘输入的阿拉伯数字(1-9)转化为中文大写数字(一到九)
SET TALK OFF CLEAR
C=?一二三四五六七八九? INPUT ?请输入数字? TO X ******1******
D=SUBSTR(C,2*X+1,1) ******2****** ?X+?转化为?+D SET TALK ON
1. D=SUBSTR(C,2*X-1,2)
2. ? STR(X,1) +’转化为’+D / ? STR(X) +’转化为’+D /X, ’转化为’,D 6. 查找学生表中有奖学金的同学信息.
学生.DBF
学号 姓名 奖学金 C,6 C,8 N,4
SET TALK OFF CLEA USE 学生
******1****** DO WHILE EOF() IF 奖学金>0
?学号,姓名,奖学金 ENDIF SKIP
******2****** ENDSCAN USE
SET TALK ON
1. DO WHILE NOT EOF() / DO WHILE ! EOF() /DO WHILE EOF()=.F. 2. ENDDO
7. 查找学生表中男生和女生的奖学金总额.
学生表: 学号(C,6 ), 性别(L,1),奖学金(N,8,2)
假设男生性别为T SET TALK OFF CLEAR JE1=0 JE2=0 USE 学生
DO WHILE NOT EOF() ******1****** IF !性别
JE1=JE1+奖学金 ELSE
JE2=JE2+奖学金 ENDIF
******2****** SKIP -1 ENDDO
??男生奖学金总额为:?,JE1 ??女生奖学金总额为:?,JE2 USE
SET TALK ON
1. IF 性别 / IF性别=.T. 2. SKIP /SKIP 1 8. 打印口诀表的程序如下:
1*1=1
1*1=1 1*2=2
1*1=1 1*2=2 1*3=3
1*1=1 1*2=2 1*3=3 1*4=4 SET TALK OFF CLEAR ?
FOR I=1 TO 4 ******1****** FOR J=1 TO 4
??STR(1,2)+?*?+STR(J,2)+?=?+STR(1*J,2) ENDFOR ******2****** ??
ENDFOR
1. FOR J=1 TO I 2. ?
9. 编写工资的分发金额张数(100元,1元的张数).假设工资金额为正整数.
SET TALK OFF CLEA
INPUT ?请输入工资金额:? TO JE STORE 0 TO A1,A2 IF JE>=100
******1****** A1=INT(JE,100) ******2****** JE=MOD(JE/100) ENDIF A2=JE
??100元张数是:?,A1 ??1元张数是:?,A2 SET TALK ON 1. A1=INT(JE/100)
2. JE=MOD(JE,100) / JE=JE0
10. 打印倒三角形图案(假设图案中心距屏幕位置为10).
* * * * * * * * *
SET TALK OFF
CLEAR
******1****** FOR I=3 TO 1 ******2******
?SPACE(10)
FOR J=1 TO 2*I-1 ??'*' ENDFOR
ENDFOR
SET TALK ON
1. FOR I=3 TO 1 STEP -1 2. ?SPACE(10-I)
11. 将学生表中学号前3位为?951?的学生奖学金加50元. 学生表: 学号(C,6 ), 性别(L,1),奖学金(N,8,2) SET TALK OFF CLEA USE 学生
*******1******** DO WHILE EOF()=.T. IF LEFT(学号,3)=?951?
REPL 奖学金 WITH 奖学金+50 ENDIF
*******2******* LOOP ENDDO USE
SET TALK ON
1. DO WHILE EOF()=.F. / DO WHIL NOT EOF() / DO WHIL ! EOF() 2. SKIP /SKIP 1
11从键盘输入5个整数,求出最大数和最小数. SET TALK OFF CLEA
INPUT ?请输入第一个整数? TO A ********1******** STORE 0 TO M1,M2 FOR I=1 TO 4
INPUT ?请输入下一个整数:? TO A ********2*******
IF M1>A M1=A ENDIF IF M2>A M2=A ENDIF ENDFOR
??最大数是:?, M1 ??最小数是:?,M2 SET TALK ON
1. STORE A TO M1,M2 2 .IF M1M1
12.根据输入数据,计算不大于该数的偶数累加和. SET TALK OFF CLEA
INPUT '请输入两位以上的正整数:' TO N STORE 0 TO X,Y ********1******** DO WHILE N IF INT(X/2)=X/2 Y=Y+X ELSE *********2******* EXIT ENDIF ENDDO ?Y SET TALK ON 1. DO WHILE N>=X / DO WHILE X<=N 2. LOOP 13.下列程序为口令验证程序.口令随系统日期发生变化,允许输入三次口令. SET TALK OFF CLEA K0=DAY(DATE())+MONTH(DATE()) I=0 DO WHILE .T. SET CONS OFF ACCEPT ?请输入口令:? TO K1 SET CONS ON I=I+1 ********1******** IF K1=K0 .OR. I=3 EXIT ELSE ??请重新输入口令: ? *********2****** SKIP ENDIF ENDDO SET TALK ON 1. IF K1=STR(K0,2) .OR. I=3 / IF ALLT(K1)=STR(K0,2) OR. I=3 2. LOOP 14.将学生表和成绩表建立临时关联,显示学生的学号,姓名,课程号,成绩等字段内容. SET TALK OFF SELE 1 USE 学生 SELE 2 USE 成绩 ALIAS CJ INDEX ON 学号 TO XH SELE 1 **********1********** SET RELA TO 学号 INTO 成绩 **********2******** ?学号,姓名,B->课程号,成绩.成绩 SET TALK ON 1. SET RELA TO 学号 INTO CJ / SET RELA TO 学号 INTO B 2. ?学号,姓名,B->课程号,CJ->成绩 / ?学号,姓名,B.课程号,CJ.成绩/?学号,姓名,CJ->课程号,CJ.成绩/?学号,姓名,CJ->.课程号,CJ->.成绩 15.下面主程序MAIN.PRG通过调用完成阶乘运算子程序计算S=K!+(K+1)!+(K+2)!+…..M! *MAIN.PRG SET TALK OFF INPUT ?请输入K的值? TO K INPUT ?请输入M的值? TO M STORE 0 TO S,A ******1****** I=M DO WHILE I<=M ******2***** DO SUB WITH K,M S=S+A I=I+1 ENDDO ??S=?,S SET TALK ON *SUB.PRG PARA P,N P=1 FOR L=1 TO N P=P*L ENDFOR RETU 1. I=K 2. DO SUB WITH A,I 16. 在屏幕上显示如下图形: 1 222 33333 4444444 555555555 SET TALK OFF CLEA FOR I=1 TO 5 ?SPACE(10-I) *********1******** FOR J=1 TO 2*I **********2******* ??STR(J,1) ENDFOR ENDFOR SET TALK ON 1. FOR J=1 TO 2*I-1 2. ??STR(I,1) 17以下程序实现四则运算. SET TALK OFF CLEA INPUT ?请输入第一个数:? TO A *******1********** ACCEPT ?请输入第二个数? TO B ACCEPT ?请输入运算符? TO C DO CASE CASE C=?+? D=A+B CASE C=?/? D=A/B CASE C=?-? D=A-B CASE C=?*? D=A*B ********2****** ENDDO ?D SET TALK ON 1. INPUT ‘请输入第二个数’ TO B /INPUT TO B 2. ENDCASE 18.按姓名查询学生表中的学生信息,可连续查询. SET TALK OFF USE 学生 DO WHILE .T. ACCEPT ?请输入姓名? TO XM *****1****** SEEK FOR 姓名=XM IF FOUND() ?学号,姓名 ENDIF WAIT ?要继续查询吗?? TO YN *****2****** IF UPPER(YN)=?N? LOOP ELSE EXIT ENDIF ENDDO SET TALK ON 1. LOCATE FOR 姓名=XM / LOCATE FOR XM=姓名 / LOCATE FOR ALLT(姓名)=XM / LOCATE FOR XM=ALLT(姓名) 2. IF UPPER(YN)=’Y’ / IF YN=’Y’ OR YN=’y’/IF LOWER(YN)=’y’ 19. 从键盘输入单价和数量,计算金额,若购买数量大于等于100,则9折优惠, 若购买数量大于等于1000,则8折优惠。 SET TALK OFF CLEA INPUT ?请输入单价? TO DJ INPUT ?请输入数量? TO SL DO CASE *******1******* CASE SL>=100 JE=DJ*SL*0.9 CASE SL>=1000 JE=DJ*SL*0.8 *******2******** WISE JE=DJ*SL ENDCASE ?JE SET TALK ON 1. CASE SL>=100 AND SL<1000 2. OTHERWISE /CASE SL<100 20.求1-1000之内既能被3整除,又能被7整除的数之和. SET TALK OFF CLEAR S=0 FOR I=1 TO1000 *******1****** IF INT(I,3)=I/3 AND INT(I,7)=I/7 S=S+I ENDIF *******2****** ENDDO ? S SET TALK ON 1. IF INT(I/3)=I/3 AND INT(I/7)=I/7 / IF MOD(I,3)=0 AAND MOD(I,7)=0 / IF I%3=0 AND I%7=0 2. ENDFOR 21.用永真循环实现向学生表中添加空白记录,其中学号,姓名,性别和出生年月四个字段内容从键盘输入. SET TALK OFF CLEA USE 学生 DO WHILE .T. INPUT ?请输入学号? TO XH INPUT ?请输入姓名? TO XM INPUT ?请输入性别? TO XB INPUT ?请输入出生年月? TO CSNY **********1********* APPEND REPL 学号 WITH XH,姓名 WITH XM,性别 WITH XB, 出生年月 WITH CSNY WAIT ?继续输入吗?? TO YN IF UPPER(YN)=?N? ********2******* LOOP ENDIF ENDDO SET TALK ON 1.APPEND BLANK 2. EXIT 22.统计输入字符串中数字、字母、空格和其它符号个数。 SET TALK OFF CLEA ACCEPT ?请输入字符串? TO X STORE 0 TO S1,S2,S3,S4 **********1*********** FOR I=1 TO X Y=SUBSTR(X,I,1) DO CASE CASE UPPER(Y)>=?A? AND UPPER(Y)<=?Z? S1=S1+1 ***********2************* CASE Y>=0 AND Y<=9 S2=S2+1 CASE Y=SPACE(1) S3=S3+1 OTHERWISE S4=S4+1 ENDCASE ENDFOR ?S1,S2,S3,S4 SET TALK ON 1. FOR I=1 TO LEN(X) / FOR I=1 TO LEN(ALLT(X)) 2. CASE Y>=’0’ AND Y<=’9’ 23.从键盘输入20个数,统计正数,负数,0个数. SET TALK OFF CLEAR STORE 0 TO S1,S2,S3 FOR I=1 TO 20 INPUT TO X ********1******* IF X>=0 S1=S1+1 ELSE IF X<0 S2=S2+1 ELSE S3=S3+1 ENDIF *******2***** ENDF ENDFOR ??正数个数是:?,S1 ? ?负数个数是:?,S2 ??0的个数是:?,S3 SET TALK ON 1. IF X>0 / IF 0 24.求一个十进制整数N的各位数字之和.如231 :2+3+1=6 SET TALK OFF CLEA INPUT TO N S=0 DO WHILE .T. *****1***** A=MOD(N/10) S=S+A N=INT(N/10) IF N=0 ******2****** LOOP ENDIF ENDDO ?S SET TALK ON 1. A=MOD(N,10) / A=N 2. EXIT 25.求M!末位0的个数. SET TALK OFF CLEAR INPUT TO M ******1****** T=0 FOR I=1 TO M T=T*I ENDFOR S=0 DO WHILE .T. N=MOD(T,10) IF N=0 S=S+1 ENDIF ********2******* T=T/10 IF T=0 EXIT ENDIF ENDDO ??0的个数?,S SET TALK ON 1. T=1 2. T=INT(T/10) 26.设计程序,分别计算圆的面积、圆周长。 SET TALK OFF CLEAR ??***********圆计算程序********? ??1---计算圆面积 ? ??2—计算圆周长 ? ??3—退出 ? ??******************************? DO WHILE .T. INPUT ?请选择? TO X INPUT ?请输入圆半径:? TO Y DO CASE CASE X=1 DO SUB1 WITH Y CASE X=2 ********1******* DO SUB2 WITH X OTHERWISE EXIT ENDCASE ENDDO SET TALK ON *SUB1 PARA M *****2******** S=PI( )*M*2 ?S RETU *SUB2 PARA M S=2*M*PI( ) ?S RETU 1. DO SUB2 WITH Y 2. S=PI()*M^2 / S=3.14*M*M / S=PI()*M*M / S=3.14*M^2 27.通过子程序调用求(M!+N!)/(MN+MM) *MAIN.PRG SET TALK OFF CLEAR *******1****** SET PROC TO INPUT ?M=? TO M INPUT ?N=? TO N S1=M S2=N DO P1 WITH S1 DO P2 WITH S2 S=(S1+S2)/(M*N+M*M) ?S SET TALK ON PROC P1 PARA Y T=1 FOR I=1 TO Y T=T*I ENDFOR ********2****** T=Y RETU ENDPROC 1. SET PROC TO MAIN 2. Y=T 28.求数学公式S=K!+(K+1)!+…..+M!(K FOR I=K TO M T=1 ********1******* FOR J=1 TO M T=T*J ENDFOR ********2******* S=S+I ENDFOR ?S SET TALK ON 1. FOR J=1 TO I 2. S=S+T 29通过子程序调用求M!/N!(M-N)! *MAIN.PRG SET TALK OFF CLEAR INPUT ?请输入M的值? TO M INPUT?请输入N的值? TO N STORE 0 TO S1,S2,S3 DO P1 WITH M,S1 DO P1 WITH N,S2 DO P1 WITH M-N,S3 S=S1/S2*S3 SET TALK ON *P1.PRG ********1******* PARA Y,X T=1 FOR I=1 TO X ******2****** T=T*X ENDFOR Y=T RETU 1. PARA X,Y 2. T=T*I 30 编写自定义函数,判定给定正整数是否为偶数,是返回.T.,否则返回.F.. SET TALK OFF CLEAR INPUT ?X=? TO X IF X>0 ******1******* IF X ?X,?是偶数!? ELSE ?X,?不是偶数!? ENDIF ENDIF SET TALK ON FUNC JOS PARA Y ******2********** IF Y/2=Y/2 RETU .T. ELSE RETU .F. ENDIF ENDFUNC 1. IF JOS(X) 2. IF INT(Y/2)=Y/2 /IF MOD (Y,2)=0 / IF Y%2=0 31编写自定义函数,实现成绩表中成绩的档次. SET TALK OFF CLEAR USE 成绩 ACCEPT ?请输入学号? TO XH LOCATE FOR 学号=XH IF FOUND() ******1*******8 DC=CJDC ?XH,CJ,DC ENDIF SET TALK ON FUNC CJDC PARA X DO CASE CASE X>=90 DC=?优? CASE X>=80 DC=?良? CASE X>=70 DC=?中? CASE X>=60 DC=?及格? OTHERWISE DC=?不及格? ENDCASE ******2****** RETU ENDFUNC 1. DC=CJDC(CJ) 2. RETU DC 32. 将命令按钮组的命令按钮的CAPTION属性依次设为添加、删除、前翻、后翻、退出。 SET TALK OFF CLEAR C=?添加删除前翻后翻退出? ******1****** FOR I=1 TO THISFORM.COMMANDGROUP1.BUTTONS ******2****** THISFORM.COMMANDGROUP1.BUTTON(I).CAPTION=SUBSTR(C,4*I-3,4) ENDFOR SET TALK ON 1. FOR I=1 TO THISFORM.COMMANDGROUP1.BUTTONCOUNT/ FOR I=1 TO 5 2. THISFORM.COMMANDGROUP1.BUTTONS(I).CAPTION=SUBSTR(C,4*I-3,4) 33.求1!+2!+3!+…..+N!的值不超过10的20次幂和临界值N. SET TALK OFF CLEAR *****1***** S=1 STORE 1 TO T,N DO WHILE S<=1E+20 T=T*N S=S+T *****2***** N=N+2 ENDDO ?\ SET TALK ON 1. S=0 2. N=N+1 34.求X+3X+5X+7X+…+(2*N+1)X的值. SET TALK OFF CLEAR INPUT \INPUT \S=0 T=1 ******1**** FOR I=1 TO (2*N+1) STEP 1 *****2****** T=T*X S=S+T ENDFOR ?\ SET TALK ON 1. FOR I=1 TO (2*N+1) STEP 2 2. T=I*X 35.将日期表达式中的月份转换为大写形式.(如11月----十一月) SET TALK OFF INPUT TO X M=MONTH(X) C=\○一二三四五六七八九十\S=\ ******1***** IF M>0 S= SUBSTR(C,2*M+1,2) ELSE ******2******** S= '十'+SUBSTR(C,2*INT(M,10)+1,2) ENDIF S=S+\月\?S SET TALK ON 1. IF M<=10 2. S= '十'+SUBSTR(C,2*MOD(M,10)+1,2) 36. 将日期表达式中的年份转换为大写形式.(如1999年----一九九九年) SET TALK OFF INPUT TO Y Y=YEAR(Y) C=\○一二三四五六七八九十\S=\ FOR I=1 TO 4 ********1********* P=MOD(Y/10) **********2******** S=S+SUBS(C,2*P+1,2) Y=INT(Y/10) ENDFOR S=S+\年\?S SET TALK ON 1. P=MOD(Y,10) 2. S=SUBS(C,2*P+1,2)+S 37.下列程序实现智能算式的计算. SET TALK OFF CLEAR DO WHILE .T. ACCEPT '请输入算式:' TO EXP FOR I=1 TO 2 INPUT '请输入正确答案: ' TO AN *******1******** IF AN=EXP ?'答案正确!' EXIT ELSE ?'再输入答案一次!' ENDIF ENDFOR IF I>2 *********2******** ?'正确答案为:'+EXP+'='+&EXP ENDIF WAIT '要继续输入吗?/YN' TO YN IF UPPER(YN)='Y' CLEAR LOOP ELSE EXIT ENDIF ENDDO SET TALK OFF 1. IF AN=&EXP /IF AN=EVALUATE(EXP) /IF AN=(EXP) 2. ? '正确答案为:'+EXP+'='+STR(&EXP,20,2)/ '正确答案为:'+EXP+'='+STR((EXP),20,2)/ '正确答案为:'+EXP+'='+STR(EVALUATE(EXP),20,2) /?'正确答案为:',EXP,’=’,STR(&EXP,20,2) 38假定银行一年期储蓄的计息方法是:实际存期超过一年,则其中一年按年利率7.8%计息,其余时间按活期利率2.8%计息;实际存期未满一年,则按活期利率2.8%计息;一年按365天计算。计算公式为:利息=本金*利率*存款天数/365。 数据库”LXK.DBF”的结构如下: 帐号:ZH(C,8) 日期:RQ(D,8) 金额:JE(N,10,2) *****BX.PRG***** SET TALK OFF USE LXK CLEAR ACCEPT “请输入帐号:” TO NUMBER LOCA FOR ZH=NUMBER IF !EOF() ? “找不到帐号” ELSE *******1********* IF RQ>365 LX= JE*0.078 ELSE LX=JE*(DATE()-RQ)/365*0.028 ENDIF ***********2******** BX=LX ? “本息总计=$”+LTRIM(STR(BX,10,2))+”元” ENDIF SET TALK ON 1. IF (DATE()-RQ)>365 2. BX=JE+LX 39.已知某工资表,对工资进行等级制定.若工资大于1000元为?一级?,工资在500元和1000元之间为?二级?,其余为?三级?.最后统计一级人数。 工资.DBF结构: 工资(N,8,2) 级别(C,6) SET TALK OFF USE 工资 DO WHILE !EOF() IF 工资>1000 REPL 级别 WITH ?一级? ELSE ******1****** IF 工资>=500 OR 工资<=1000 REPL 级别 WITH ?二级? ELSE REPL 级别 WITH ?三级? ENDIF ENDIF ENDDO *******2****** RECOUNT TO C FOR 级别=?一级? ?C SET TALK ON 1. IF 工资>=500 AND 工资<=1000 2. COUNT TO C FOR 级别=’一级’ 40.通过参数A,B,C接受一元二次方程ax2+bx+c=0的三个系数,并求解这个方程;如果有实根,通过参数X1和X2返回它的两个根,函数的返回值为.T.;如果没有实根或出现其他异常情况,函数返回.F. FUNC CJ PARA A,B,C,X1,X2 IF a=0 RETU .F. ENDIF DLT=b*b-4*a*c IF DLT<0 *******1****** RETU .T. ENDIF X1=(-b+SQR(DEL))/(2*a) ********2********* X2=(-b+SQR(DEL))/(2*a) RETU .T. ENDFUNC 1. RETU .F. / RETU .N. 2. X2=(-b-SQR(DEL))/(2*a) ( 注: 本题/是除号) 41.已知学籍数据库,包含学生表,成绩表和课程表. 学生表结构:学号(C ),姓名(C ),性别(L),奖学金(N) 成绩表结构:学号(C ),课程号(C ),成绩(N) 课程表结构;课程号(C ),课程名(C ) 下面程序的功能是:根据查看学生?王平?的某课程的成绩. SET TALK OFF CLEAR SELE 1 USE 学生 LOCATE FOR 姓名=?王平? SELE 2 USE 成绩 *******1******* LOCATE FOR姓名=?王平 SELE 1 ******2******** ?学号,姓名,成绩 SET TALK ON 1. LOCATE FOR 学号=学生.学号 / LOCATE FOR 学号=A.学号 2. ?学号,姓名,B.成绩 / ?学号,姓名,成绩.成绩 / ?学号,姓名,B->成绩 /?学号,姓名,成绩->成绩 42. 已知学籍数据库,包含学生表,成绩表和课程表. 学生表结构:学号(C ),姓名(C ),性别(L),奖学金(N) 成绩表结构:学号(C ),课程号(C ),成绩(N) 课程表结构;课程号(C ),课程名(C ) 下面程序的功能是:根据查看学号为?951001?的某课程的成绩 SET TALK OFF CLEAR SELE 1 USE 学生 *******1******* SEEK ?951001? SELE 2 USE 成绩 ALIAS CJ LOCATE FOR学号=?951001? SELE 1 ******2******** ?学号,姓名,成绩.成绩 SET TALK ON 1. LOCATE FOR学号=’951001’ 2. ?学号,姓名,CJ.成绩 / ?学号,姓名,CJ->成绩 / ?学号,姓名,B.成绩 / ?学号,姓名,B->.成绩 43.已知某工资表GZ.DBF,根据用户输入的岗位查找记录,如果找到则显示,否则给出错误提示信息. 工资表结构:职工号(C),姓名(C),岗位(C ),奖金(N) SET TALK OFF CLEAR YN=?Y? USE GZ *******1******** DO WHILE .T. CLEAR ACCEPT ?请输入岗位? TO GW LOCATE FOR 岗位=GW ******2******* IF EOF() DISPLAY ELSE ??没有?+GW+?岗位人员? ENDIF WAIT ?继续查询否?? TO YN ENDDO USE SET TALK ON 1. DO WHILE UPPER(YN)=’Y’ /DO WHILE YN=’Y’ /DO WHILE YN=’y’ 2. IF FOUND() /IF !EOF() /IF NOT EOF()/IF EOF()=.F. 44.设有学生表(学号,姓名,民族)和成绩表(学号,成绩),要在它们之间建立逻辑连接,然后为每个少数民族考生成绩增加5分,最后显示全体考生的学号,姓名和成绩. SET TALK OFF CLEAR SELE 1 USE 学生 *********1************* INDEX ON 学号 SELE 2 USE 成绩 SET RELA TO 学号 INTO A ***********2************* REPL 成绩 WITH 5 FOR 民族=?少数民族? LIST 学号,成绩,A.姓名 SET TALK ON 1. INDEX ON 学号 TO XH 2. REPL 成绩 WITH 成绩+5 FOR A.民族=’少数民族’/ REPL 成绩 WITH 成绩+5 FOR 学生.民族=’少数民族’ 45. 已知学生表,成绩表和课程表的结构如下: 学生表结构:学号(C ),姓名(C ),性别(L),奖学金(N) 成绩表结构:学号(C ),课程号(C ),成绩(N) 课程表结构;课程号(C ),课程名(C ) 用SQL语句检索待补考的学生名单,并将查询结果放在JE.DBF中,并按成绩由高到低排列。 SET TALK OFF CLEAR SELE 学生.学号,姓名,成绩,课程号,课程名; FROM 学生,成绩,课程; ***************1*********** WHERE 学生.学号=成绩.学号 OR 成绩.课程号=课程.课程号 AND 成绩<60; INTO TABLE JE; **************2*********** ORDER BY 成绩 SET TALK ON 1. WHERE 学生.学号=成绩.学号 AND 成绩.课程号=课程.课程号 AND 成绩<60 2. ORDER BY 成绩 DESC 46. 已知学生表,成绩表和课程表的结构如下: 学生表结构:学号(C ),姓名(C ),性别(L),奖学金(N) 成绩表结构:学号(C ),课程号(C ),成绩(N) 课程表结构;课程号(C ),课程名(C ) 用SQL语句检索?951?班的学生学习情况,并将查询结果放在JE.DBF中,并按成绩由高到低排列。 SET TALK OFF CLEAR SELE 学生.学号,姓名,成绩,课程号,课程名; FROM 学生,成绩,课程; ***************1*********** WHERE 学生.学号=成绩.学号 AND 成绩.课程号=课程.课程号 AND LEFT(学号,3)=951; **************2*********** INTO SCREEN JE; ORDER BY 成绩 DESC SET TALK ON 1. WHERE 学生.学号=成绩.学号 AND 成绩.课程号=课程.课程号 AND LEFT(学号,3)=’951’; 2. INTO TABLE JE /INTO CURSOR JE 47打印以下图形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 SET TALK ON CLEAR DIME A(5,5) A=0 FOR I=1 TO 5 ?SPACE(10-I) FOR J=1 TO I *******1******** IF I=J AND J=1 A(I,J)=1 ELSE ******2********* A(I,J)=A(I-1,J-1)+A(I-1,J-1) ENDIF ??STR(A(I,J),2) ENDFOR ENDFOR SET TALK ON 1. IF I=J OR J=1 2. A(I,J)=A(I-1,J-1)+A(I-1,J) 48.通过ADDITEM方法向组合框COMBO1中添加学生表的姓名. ***********1************** THISFORM.COMBO1.ROWSOURCE=?学生? THISFORM.COMBO1.ROWSOURCETYPE=0 SCAN THISFORM.COMBO1.ADDITEM(姓名) ********2****** ENDDO 1. THISFORM.COMBO1.ROWSOURCE=’’ 2. ENDSCAN 49.通过设置表格(GRID1)中的列的BACKCOLOR属性,实现偶数列为红色,奇数列为绿色. **********1**************** FOR I=1 TO THISFORM.GRID1.BUTTONCOUNT *********2*************** IF MOD(I/2)=I/2 THISFORM.GRID1.COLUMNS(I).BACKCOLOR=RGB(255,0,0) ELSE THISFORM.GRID1.COLUMNS(I).BACKCOLOR=RGB(0,255,0) ENDIF ENDFOR 1. FOR I=1 TO THISFORM.GRID1.COLUMNCOUNT 2. IF INT(I/2)=I/2 / IF MOD(I,2)=0 / IF I%2=0 50..通过ADDITEM方法向组合框COMBO1中添加学生表的班级号(学号前3位),不能有重复记录.. THISFORM.COMBO1.ROWSOURCE=?? THISFORM.COMBO1.ROWSOURCETYPE=0 ********1*************** INDEX ON LEFT(学号,3) TO XH SCAN THISFORM.COMBO1.ADDITEM(LEFT(学号,3)) ENDSCAN ********2*********** SET RELATION TO THISFORM.REFRESH 1. INDEX ON LEFT(学号,3) TO XH UNIQUE 2. SET INDEX TO 51输入一个学生姓名和年龄,查找并显示所有相同姓名和年龄的学生的学号、姓名和出生年月 ,学生表结构:学号(C ),姓名(C ),性别(L),奖学金(N),出生年月(D)。 SET TALK OFF CLEAR USE 学生 ACCEPT \输入学生姓名=\INPUT \输入学生的年龄=\********1********* LOCATE FOR 姓名=NAME AND 年龄=AGE DO WHIL NOT EOF() ? 学号,姓名,出生年月 ********2******** SKIP ENDDO USE SET TALK ON 1. LOCATE FOR 姓名=NAME AND YEAR(DATE())-YEAR(出生年月)=AGE 2. CONT 52.输入一个学生姓名,查找并显示所有相同姓名的学生的学号、姓名和出生年月 学生表结构:学号(C ),姓名(C ),性别(L),奖学金(N),出生年月(D) SET TALK OFF USE 学生 **********1*********** INDEX ON 学号 TO XH ACCEPT \输入学生姓名=\SEEK NAME DO WHIL NOT EOF() ? 学号,姓名,出生年月 ************2******* CONT ENDDO USE SET TALK ON 1. INDEX ON 姓名 TO XM 2. SKIP 53.已知工资.DBF结构为职工号(C ),职称(C ), 工资(N ),姓名(C ),出生年月(D). (1)显示1960年3月2日前(含3月2日)出生的、职称为工程师的 职工的姓名、出生年月和工资。 (2)计算职工的平均工资存入变量PG中 SET TALK OFF CLEAR USE 工资 ***********1*************** LOCA FOR 出生年月>{^1960-03-02} OR 职称=?工程师? DO WHIL NOT EOF() ? 姓名,出生年月,工资 CONT ENDDO **********2********** SUM 工资 TO PG ? PG SET TALK ON 1. LOCA FOR 出生年月<={^1960-03-02} AND 职称=’工程师 2. AVER 工资 TO PG 54.编制一个表单完成对学生表的内容浏览显示功能.要求表单内容以1秒为间隔自动刷新,即自动顺序向后翻记录,当翻到表尾时,自动回到首记录循环翻动.假设时钟TIMER1的INTERVAL为1000,试编写其TIMER事件. SELE 学生 *****1****** SKIP -1 IF EOF() GO TOP ENDIF ********2******** THIS.REFRESH 1. SKIP / SKIP 1 2. THISFORM.REFRESH 55.某表单上放置一个容器(CONTAINER1),容器内有5个文本框(TEXT1-TEXT5),下面程序将文本框的初值设为1-5. DIMENSION A(5) FOR I=1 TO 5 ******1********* A=I ENDFOR FOR I=1 TO THISFORM.CONTAINER1.CONTROLCOUNT *******2******** THISFORM.CONTAINER1.TEXT(I).VALUE=A(I) ENDFOR THISFORM.REFRESH 1. A(I)=I 2. THISFORM.CONTAINER1.CONTROLS(I).VALUE=A(I) 56.表单上有一页框(PAGEFRAME1),该页框有2页(PAGE1-PAGE2),试编写页框的CLICK事件,当激活第1页时,表单背景色为红色;激活第2页时,表单背景色为绿色. DO CASE **********1*********** CASE THIS.VALUE=1 THISFORM.BACKCOLOR=RGB(255,0,0) OTHERWISE THISFORM.BACKCOLOR=RGB(0,255,0) ENDCASE ********2********* THIS.RELEASE 1. CASE THIS.ACTIVEPAGE=1 /CASE THISFORM.PAGEFRAME1.ACTIVPAGE=1 2. THISFORM.REFRESH 57. 编制一个表单完成对学生表的内容浏览显示功能.假设表单上的控件均与表字段绑定,设置命令按钮组(COMMANDGROUP1),内含前翻、后翻、退出三个按钮。当记录翻至表头、表尾时,自动设置相应按钮不可访问。试编写命令按钮组的CLICK事件。 DO CASE CASE THIS.VALUE=1 SKIP -1 IF BOF() THIS.COMMAND1.ENABLED=.F. ENDIF ********1********* THIS.BUTTON(2).ENABLED=.T. CASE THIS.VALUE=2 SKIP IF EOF() THIS.COMMAND2.ENABLED=.F. ENDIF THIS.COMMAND1.ENABLED=.T. CASE THIS.VALUE=3 ***********2*********** THIS.RELEASE ENDCASE THISFORM.REFRESH 1. THIS.COMMAND2.ENABLED=.F. / THIS.BUTTONS(2).ENABLED=.F./ THISFORM.COMMANDGROUP1.COMMAND2.ENABLED=.F./THISFORM.COMMANDGROUP1.BUTTONS(2).ENABLED=.F. 2. THISFORM.RELEASE 58.从键盘输入N个正整数(N从键盘输入,N>0),输出其中的偶数和奇数和. SET TALK OFF CLEAR INPUT ?N=? TO N S1=0 S2=0 FOR I=1 TO N INPUT ?请输入正整数? TO M ********1******* IF INT(N/2)=N/2 S1=S1+1 ELSE S2=S2+1 ENDIF ENDFOR ??偶数和是:?,S1 ******2***** ??奇数和是:?+S2 SET TALK ON 1. IF INT(M/2)=M/2 / IF MOD(M,2)=0 / IF M%2=0 2. ? ’奇数和是:’+STR(S2) /’奇数和是:’,S2 59.编写一个口令判断程序,要求从键盘输入口令并判断口令是否与系统口令(学生.DBF中的姓名字段的值)完全一致,如果一致显示欢迎信息.否则给出错误提示(输入次数最多三次!) SET TALK OFF CLEAR USE 学生 I=1 DO WHIL .T. ? '请输入口令=' SET CONSOLE OFF ACCEPT TO KL SET CONSOLE ON ******1****** LOCATE FOR ALLT(口令)=KL IF FOUND() ? '欢迎使用本系统!' EXIT ELSE I=I+1 IF I>3 EXIT ENDIF ? '口令第'+STR(I,1)+'错,再试一次!' ******2****** EXIT ENDIF ENDDO SET TALK ON . 1. LOCATE FOR ALLT(姓名)=KL/ LOCATE FOR KL= ALLT(姓名) /LOCATE FOR 姓名=KL 2. LOOP 60.本程序计算下列表达式的值,变量X,Y的值由键盘输入。 * о * Z=3sin37+XY/(X-Y) * SET TALK OFF CLEAR ACCEPT 'X=' TO X ********1******** ACCEPT 'Y=' TO Y IF VAL(X)=Y ? '输入有错' ELSE ********2******** Z=3SIN37+XY/(X-Y) ? Z ENDIF SET TALK ON 1. INPUT ‘Y=’ TO Y 2. Z=3*SIN(37*PI()/180)+X*Y/(X-Y) / Z=X*Y/(X-Y)+ 3*SIN(37*PI()/180) 61.本程序计算从58一直乘到30的积。 SET TALK OFF CLEA *********1******** S=0 ********2******* FOR I=58 TO 30 S=S*I ENDFOR ? S SET TALK ON 1. S=1 2. FOR I=58 TO 30 STEP -1 /FOR I=30 TO 58 62.*本程序实现把表学生.dbf中姓名为“张三”的学生学号改为“98000012”。 * 学生.DBF结构: * 学号 姓名 性别 出生年月 * C,8 C,8 L,1 D,8 SET TALK OFF DIME A(4) USE 学生 LOCA FOR 姓名='张三' *******1********* IF FOUND SCATT TO A *********2******** A='98000012\ GATH FROM A ELSE ?'找不到该学生' ENDIF USE SET TALK ON 1. IF FOUND() / IF NOT EOF() / IF !EOF() / IF EOF()=.F. 2. A(2)=’98000012’ 63.*本程序实现把表学生.dbf中所有记录显示出来。 * 学生.DBF * 学号 姓名 性别 出生年月 * C,8 C,8 L,1 D,8 * 其中,性别逻辑真为女,逻辑假为男。 * 要求:显示时按性別分别显示“男”或“女”。 * SET TALK OFF USE 学生 DO WHIL NOT EOF() ********1********* ? 学号+姓名+性別+出生年月 SKIP ************2******** END DO USE SET TALK ON 1. ? 学号+姓名+IIF(性別,’男’,’女’)+DTOC(出生年月) / 女’),出生年月 2. ENDDO 64. *本程序找出所有奖学金相同的记录。 * SET TALK OFF CLEA USE STU INPUT '奖学金=' TO X ******1****** SEEK X DO WHIL NOT EOF() DISP ******2****** SKIP ENDDO USE SET TALK ON 1. LOCA FOR奖学金=X / LOCA FOR X=奖学金 2. CONT ? 学号,姓名,IIF(性別,’男’,’ 65. *本程序的功能是:从学生.dbf中找出成绩最高的学生,显示姓名、成绩 SET TALK OFF USE 学生 XM=姓名 CJ=成绩 DO WHILE !EOF() *******1****** IF FOUND() CJ=成绩 XM=姓名 ENDIF *******2***** CONT ENDDO ?XM,CJ USE SET TALK ON 1. IF CJ<成绩 / IF 成绩>CJ 2. SKIP 66.*本程序显示下面图形(行数为5时) * A * BB * CCC * DDDD * EEEEE SET TALK OFF CLEAR INPUT\请输入行数:\ FOR I=1 TO N ?SPACE(20-I) ******1****** FOR J=1 TO 2*I-1 ******2****** ?CHR(ASC(\ ENDFOR ENDFOR SET TALK ON 1. FOR J=1 TO I 2. ?? CHR(ASC(‘A’)+I-1) 67.*本程序能查询显示出所有相同职称的记录。 * SET TALK OFF CLEAR USE ZG INDEX ON 职称 TO IZC ******1****** DO WHILE !EOF() I=0 ACCEPT \请输入职称:\ LOCA FOR 职称=ZC DO WHILE !EOF() IF FOUND() I=I+1 ELSE ?\无\ ENDIF ******2****** SKIP ENDDO ?ZC+\有\人\ WAIT\是否继续?(Y/N)\ IF UPPER(YN)=\ LOOP ELSE EXIT ENDIF ENDDO USE SET TALK ON 1. DO WHILE .T. 2. CONT 68、*本程序显示下面图形(行数为5时) * 12345 * 1234 * 123 * 12 * 1 SET TALK OFF CLEAR INPUT\ FOR I=N TO 1 STEP-1 ?SPACE(10) ***1*** FOR J=I TO 1 ***2*** ?? J ENDFOR ENDFOR SET TALK ON 1. FOR J=I TO 1 STEP -1 2. ?? STR(6-J,1) 69.* 本程序实现把表学生.dbf中姓名为“张三”的学生改名为“李四”。 * 学生.DBF * 学号 姓名 性别 出生年月 * C,8 C,8 L,1 D,8 SET TALK OFF USE 学生 LOCA FOR 姓名='张三' *******1********* IF EOF *********2******** 姓名='李四' DISP ELSE ?'找不到该学生' ENDIF USE SET TALK ON 1. IF !EOF() / IF NOT EOF() / IF FOUND() /IF EOF()=.F. 2. REPL姓名 WITH '李四' 70、*显示所有输入的出生日期以后出生的记录。 * SET TALK OFF CLEAR USE 学生 INPUT \请输入出生日期:\ INDEX ON 出生日期 TO ICS ***1*** SEEK FOR 出生日期<=X DO WHILE !EOF() DISP ***2*** SKIP ENDDO USE SET TALK ON 1. LOCA FOR 出生日期>X 2. CONT 71*把所有职称相同的记录显示出来,并按出生日期排序。 * ls.dbf * 职工号 姓名 出生日期 职称 * C,6 C,8 D,8 C,8 SET TALK OFF CLEAR USE LS ***1*** INDEX ON 职称+ STR(出生日期)TO IZG ACCEPT\请输入职称:\ ***2*** FIND X DO WHILE !EOF() IF FOUND() DISP ENDIF SKIP ENDDO USE SET TALK ON 1. INDEX ON 职称+ DTOC(出生日期) TO IZG 2. FIND &X / SEEK X 72本程序统计WORD表中LETTER字段中字符数小于等于10的记录数。 * WORD.DBF * LETTER * C,20 SET TALK OFF USE WORD I=0 ***1*** DO WHILE .T. ***2*** IF LEN(LETTER)<10 I=I+1 ?LETTER ENDIF SKIP ENDDO ? I SET TALK ON 1. DO WHILE !EOF() / DO WHIL NOT EOF() 2. IF LEN(ALLT(LETTER))<=10 73本程序查询所有年龄相同的记录。 * zg.dbf * 学号 姓名 年龄 * C,6 C,8 N,3 SET TALK OFF USE ZG ***1*** INDEX ON 年龄/D TO IZGY DO WHILE .T. INPUT \请输入年龄:\ ***2*** SEEK &X IF FOUND() DISP ELSE ?\查无此人!\ ENDIF WAIT\是否继续查询(Y/N)\ IF UPPER(YN)=\ LOOP ELSE EXIT ENDIF ENDDO USE / DO WHILE EOF()=.F. SET TALK ON 1. INDEX ON 年龄 TAG IZGY 2. SEEK X / FIND &X 74.下面是一段自定义函数,把两位数字转换成中文数字. PARA X C=\○一二三四五六七八九十\ S=?? DO CASE CASE X<=10 S=S+SUBSTR(C,2*X+1,2) CASE X<=19 S=S+\十\ OTHERWISE ****1**** S=S+SUBSTR(C,2*INT(X/10)+1,2)+IIF(MOD(X,10)=0,? 十?,SUBSTR(C,2*MOD(X,10)+1,2)) ENDCASE ****2**** RETURN S=S+SUBSTR(C,2*INT(X/10)+1,2)+\十\RETU S 75、本程序对表中姓名相同的一些重复记录进行删除(姓名索引文件为CYXM). SET TALK OFF CLEAR USE CYTP INDEX CYXM DO WHIL NOT EOF() XM=姓名 ********1******** LOCA FOR 姓名=XM *******2******* DO WHIL NOT EOF() DELE SKIP ENDDO ENDDO PACK USE SET TALK ON 1. SKIP 2. DO WHIL NOT EOF() AND姓名=XM / DO WHILE !EOF() AND 姓名=XM / DO WHILE NOT EOF() ANDALLT(姓名)=XM / DO WHILE !EOF() AND ALLT(姓名)=XM 76、本程序显示下面格式图形。 A A AB A AB ABC A AB ABC ABCD A AB ABC ABCD ABCDE SET TALK OFF CLEA FOR I=1 TO 5 ? FOR J=1 TO I ****1**** FOR K=1 TO I ****2**** ??CHR(65+K) ENDFOR ??SPACE(2) ENDFOR ENDFOR SET TALK ON 1. FOR K=1 TO J 2. ??CHR(64+K) 77、本程序从键盘输入学生的学号,在“成绩”表中计算该生的平均成绩,并说明成绩的档次(优、良、中、及格和不及格)。 SET TALK OFF CLEA USE 成绩 S='不及格 及格 中 良 优' ACCEPT '请输入学生的学号=' TO XH LOCA FOR 学号=XH IF !FOUND() ? '查无此人' ELSE AVER 成绩 TO CJ FOR 学号=XH IF CJ<60 R=0 ELSE ******1****** R=CJ ENDIF *******2****** DC=SUBSTR(C,6*R-1,6) ? XH,CJ,DC ENDIF USE SETTALK ON 1. R=INT(CJ/10) 2. DC=SUBSTR(S,6*R+1,6) 78、本程序输入学生学号,计算平均成绩。 * 学生.DBF 成绩.DBF * 学号 姓名 性别 学号 课程号* C,5 C,8 L,1 C,5 C,3 SET TALK OFF CLEA USE 学生 A=1 ******1****** DO WHIL .T. ACCEPT '输入学号=' TO XH IF FOUND() A=2 ELSE ? '无该学号' ENDIF ENDDO NA=姓名 USE 成绩 ******2****** AVER 成绩 TO ST ?'学号 姓名 平均成绩' 学号,NA,ST USE SET TALK ON 1. DO WHILE A=1 / DO WHIL A=1 2. AVERAGE 成绩 TO ST FOR 学号=XH 成绩N,3 79、本程序实现输入任意表名,显示该表中所有字段名。 SET TALK OFF CLEA ACCEPT '输入表名(不含扩展名)=' TO DF DF=DF+'.DBF' ******1****** IF FILE('DF') *******2****** USE DF FOR I=1 TO FCOUNT() ? FIELDS(I) ENDFOR ELSE ? '无该表名' ENDIF SET TALK ON 1. IF FILE(DF) / IF FILE('&DF') 2. USE (DF) / USE &DF 80、本程序用于计算圆面积。 SET TALK OFF CLEAR INPUT '圆半径=' TO R ******1****** DO SS WITH R ? '圆面积=', R SET TALK ON *SS.PRG ******2****** PARA S S=PI()*X*X X=S RETU X 1. R=SS(R) / R=SS(@R) 2. PARA X 81、本程序用于判别输入三个数是否构成三角形。 SET TALK OFF CLEA INPUT 'X=' TO X INPUT 'Y=' TO Y INPUT 'Z=' TO Z *******1******* IF SS ? '构成三角形' ELSE ? '不构成三角形' ENDIF SET TALK ON *SS.PRG PARA A1,A2,A3 IF A1>A2+A3 RETU .T. ELSE IF A2>A1+A3 RETU .T. ELSE IF A3>A1+A2 RETU .T. ENDIF ENDIF ENDIF *******2****** RETU 1. IF SS(X,Y,Z) 2. RETU .F. 82、本程序计算S=X1+X2+···+XN的值。 SET TALK OFF CLEA INPUT 'N=' TO N ******1****** I=1 DO WHIL I<=N INPUT 'X=' TO X I=I+1 S=S+X*I ENDDO ******2****** ? 'S='+S SET TALK ON 1. STOR 0 TO S,I / STOR 0 TO I,S 2. ? 'S='+STR(S) / ? 'S=',S 83、把任意一个英文大写字母转换为相应的小写字符。 SET TALK OFF CLEA ACCEPT '输入英文大写字母=' TO X ******1****** IF ASC(X)>97 S=X ELSE *******2******* S=STR((VAL(X)+32) ? X+'的小写字符为'+S ENDIF SET TALK ON 1. IF ASC(X)>=97 2. S=CHR(ASC(X)+32) 84、本程序实现自动算术测试功能,按ESC键退出。 SET TALK OFF SET ESCA TP OFF DO WHIL .T. ACCEPT '请输入算术式子=' TO X INPUT '请输入算术式子答案=' TO AN *******1****** IF AN=X ? '答案正确' ELSE ? '答案错误' ENDIF *******2****** IF INKEY()=13 EXIT ENDIF ENDDO SET ESCAPE ON SET TALK ON 1. IF AN=&X / IF &X=AN 2. IF INKEY()=27 85、把“MM/DD/YY”形式输入的日期型变量转换成“YYYY年MM月DD日”形式。 SET TALK OFF SET STRICTDATE TO 1 ******1****** ACCEPT '输入日期=' TO X Y1=YEAR(X) M1=MONTH(X) D1=DAY(X) ******2****** X=Y1+'年'+M1+'月'+D1+'日' ? X SET TALK ON 1. INPUT '输入日期=' TO X / INPUT TO X 2. X=STR(Y1,4)+'年'+STR(M1,2)+'月'+STR(D1,2)+'日' /Y=Y1,’年’,M1,’月’,D1,’日’ 86、 本程序计算∑A1+∑A2+∑A3的值(∑AI=1+2+3+···+AI)。 SET TALK OFF CLEAR ******1****** T=0 FOR I=1 TO 3 INPUT 'N=' TO N DO SS WITH N,X T=T+X ENDFOR ? T SET TALK ON *SS.PRG ******2****** PARA A1,A2 Z=1 FOR J=1 TO A2 Z=Z+J ENDFOR A1=Z RETU 1. STOR 0 TO T,X / STOR 0 TO X,T 2. PARA A2,A1 87、本程序实现任意查询功能。 SET TALK OFF CLEA ACCEPT '输入表名(不含扩展名)' TO DB DB=ALLT(DB)+'.DBF' IF FILE(DB) ******1****** FOR I=1 TO COUNT() ? FIELDS(I) ENDF ACCEPT '' TO X USE (DB) ******2****** LIST FOR X ELSE ? '找不到该表' ENDIF SET TALK ON 1. FOR I=1 TO FCOUNT() 2. LIST FOR &X / DISP FOR &X 88、本程序用于判别输入数据的类型(只判别数值型和字符型两类)。 SET TALK OFF CLEA DO WHIL .T. INPUT '' TO X DO CASE ******1****** CASE TYPE('X')='c' ? X,''是字符型” EXIT ******2****** CASE VARTYPE('X')='n' ? X,''是数值型” EXIT OTHER LOOP ENDC ENDDO SET TALK ON 1. CASE TYPE('X')='C' 2. CASE VARTYPE(X)='N' 89、本程序计算正整数M(从键盘输入)内的偶数及偶数和。 SET TALK OFF CLEA INPUT 'M=' TO M ******1****** S=0 DO WHIL I<=M ******2****** IF MOD(I/2)=0 ? I S=S+I ENDIF I=I+1 ENDDO ? S SET TALK ON 1. STOR 0 TO S,I / STOR 0 TO I,S 2. IF MOD(I,2)=0 / IF I%2=0 / IF INT(I/2)=I/2 / IF I/2=INT(I/2) 90、求当1!+3!+5!+···+n!的值不超过10^20时的临界值及n的值。 SET TALK OFF CLEA STOR 1 TO S,N ******1****** DO WHIL S<=20E+10 T=T*(N+1)*(N+2) S=S+T N=N+2 ENDDO ******2****** ? \ SET TALK ON 1. DO WHIL S<=1E+20 2. ? \ 91、本程序根据输入数据,判断是否偶数。 SET TALK OFF CLEAR YN='Y' *******1****** DO WHIL YN INPUT '输入自然数=' TO N ******2****** IF N%2 ? '是偶数' ELSE ? '不是偶数' ENDIF WAIT '还要输入其它自然数(Y/N)' TO YN ENDDO SET TALK ON 1. DO WHIL YN=’Y’ / DO WHILE UPPER(YN)=’Y’ 2. IF N%2=0 / IF MOD(N,2)=0 / IF INT(N/2)=N/2 92、输入日期,求对应星期几。 SET TALK OFF CLEA *****1***** ACCEPT '输入日期=' TO X A='天一二三四五六' ******2***** B=SUBSTR(A,DOW(X)+1,2) ? DTOC(X)+'是'+B SET TALK ON 1. INPUT '输入日期=' TO X 2. B=SUBSTR(A,2*DOW(X)-1,2) 93、实现两个个位数相加的计算题。 SET TALK OFF CLEA A=INT(9*RAND()) B=INT(9*RAND()) *****1***** ?A+'+'+B+'=' INPUT '请输入答案=' TO X ******2**** IF A+B=&X ? '回答正确' ELSE ? '回答错误' ENDIF SET TALK ON 1. ? STR(A,2)+’+’+STR(B,2)+’=’ 2. IF A+B=X / IF X=A+B 94、从键盘上输入N个数据,找出其中最小值。 SET TALK OFF CLEA INPUT 'N=' TO N INPUT 'A=' TO A ******1****** DO WHIL I<=N INPUT 'B=' TO B ******2****** IF B SET TALK ON 1. FOR I=1 TO N-1 2. IF B>A / IF A 95、从键盘上输入N个数据,找出其中最大值。 SET TALK OFF CLEA INPUT 'N=' TO N INPUT 'X=' TO X *******1******* X=A ******2****** FOR I= 1 TO N INPUT 'X=' TO X IF A SET TALK ON
正在阅读:
2003VFP程序改错题2-103-29
劳资科“十五”工作总结07-29
OriginLab OriginPro 2016 SR0-SR2安装破解过程04-19
五百次的回眸02-14
微信小程序项目计划书-小程序项目计划书04-05
盘点:97个品牌2015年拓展计划03-13
14东莞会计继续教育08-28
瑜伽的26个基本体式(图文)09-20
汽车电子技术发展趋势12-12
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 错题
- 2003VFP
- 程序
- 山西省2015届高三年级第二次四校联考英语
- 试验室验收细则及管理制度 - 图文
- 2016年湖南公务员考试《行测》真题卷及解析
- 职校招生宣传演讲稿
- 景德镇陶录
- 会展经济和会展产业链
- 社区打黑除恶工作方案007 31
- 小学数学获奖论文(小学低年级数学课堂中创设有效情境再思考)
- 校车学生上下学交接制度
- 2011年四川省高考数学试卷(文科)答案与解析
- 大朱少先队红旗大队申报材料
- 新GREissue题目翻译
- 甲级单位编制压光机项目可行性报告(立项可研+贷款+用地+2013案
- 行政案件权利义务告知书
- 广西公务员网络培训考试之自治区第十次党代会报告精神解读考试题
- 6.3知识产权专项经费管理制度
- 六种领导风格转换案例
- 7天学院前台理论考试试题(第二套) - 搞定
- 七年级上册语文文言文和古诗复习资料
- 初中重要古诗句默写