程序设计上机练习.ppt

上传人:小飞机 文档编号:6230030 上传时间:2023-10-07 格式:PPT 页数:73 大小:320.49KB
返回 下载 相关 举报
程序设计上机练习.ppt_第1页
第1页 / 共73页
程序设计上机练习.ppt_第2页
第2页 / 共73页
程序设计上机练习.ppt_第3页
第3页 / 共73页
程序设计上机练习.ppt_第4页
第4页 / 共73页
程序设计上机练习.ppt_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《程序设计上机练习.ppt》由会员分享,可在线阅读,更多相关《程序设计上机练习.ppt(73页珍藏版)》请在三一办公上搜索。

1、程序设计补充知识,字符串比较的规律:同规格的字母比较,按字母的顺序排列,后面的大;大小写字母比较,大写字母大于小写字母;数字字符比较,按数值的大小排列,数值大的大;字母与数字比较,数字(09)均小于字母;空格比数字、标点、字母等常见符号都小。,程序设计例题,例1 某储户在取款机上提取x元现金,计算钞票总张数最少(假设x只能为50的整数倍)。CLEAR INPUT 请输入取款金额:TO x Y1=INT(x/100)x=x-100*y1 Y2=INT(x/50)?100元钞票的张数:,Y1?50元钞票的张数:,Y2,例2 设A=10,B=20,将它们的值互换后输出。问题分析:交换两个变量的值需要

2、借助第三个变量,例如建立一个临时变量T,根据分析,写出程序如下:A=10 B=20 T=A A=B B=T?A=,A?B=,B CANCEL,程序设计例题,例3 问题的提出:例如:铁路托运行李,从甲地到乙地,按规定每张客票托运行李不超过50公斤时,每公斤0.45元,如超过50公斤,超过部分按每公斤0.65元计算。,刚才提出的问题,铁路托运行李,从甲地到乙地,按规定每张客票托运行李不超过50公斤时,每公斤0.45元,如超过50公斤,超过部分按每公斤0.65元计算。我们可以编写如下程序加以实现:INPUT 请输入行李重量:TO XIF X=50 P=0.45*50+0.65*(X-50)ELSE

3、P=0.45*X ENDIF?应付运费为:,P,元CANCEL,程序设计例题,例4 输入一个四位正整数,如果百位为6且可被3整除,输出该数 input 请输入四位正整数 to abcif substr(str(abc,4),2,1)=6 and mod(abc,3)=0?该数符合要求,abcendif,例5 判断输入的字符是属于字母、数字或特殊符号(字母、数字之外的符号)编写代码如下:SET TALK OFF ACCEPT 请输入一个字符:TO cVar DO CASE CASE UPPER(cVar)=A?cVar,输入的是字母 CASE cVar=0?cVar,输入的是数字 OTHERWI

4、SE?cVar,输入的是特殊符号 ENDCASE SET TALK ON,程序设计例题,例6 编写一个程序,使之能对输入的一个学生任意一门考试成绩输出是优秀、良好、中等、及格或不及格五个等级。具体要求:90100为优秀、8089为良好、7079为中等、6069为及格、059为不及格。,INPUT 请输入一个成绩(0100):TO X DO CASE CASE X100.OR.X=90?优秀 CASE X=80?良好 CASE X=70?中等 CASE X=60?及格 OTHERWISE?不及格 ENDCASE CANCEL,例7 求 1+2+3+99+100,问题分析:可以采用累加的方法,用循

5、环变量x 来产生1、2、3、99、100的数;用累加变量s保存累加和,从1 开始,每次增加1,送到累加变量s 中。,程序如下:CLEAR s=0 x=1 DO WHILE x=100 s=s+x x=x+1 ENDDO?s=,s CANCEL,例8 求两个数中较大的数。编写程序如下:CLEARINPUT INPUT A:TO AINPUT INPUT B:TO BIF AB X=AELSE X=BENDIF?X,例9 从键盘输入10任意数,并将10个数按从小到大的顺序输出。CLEARDIMENSION X(10)FOR I=1 TO 10X(I)=0II=STR(I,2)Input 请输入第+

6、II+个数据 to x(I)ENDFOR,FOR I=1 TO 10FOR J=I+1 TO 10IF X(I)X(J)T=X(I)X(I)=X(J)X(J)=TENDIFENDFORENDFORFOR I=1 TO 10?X(I)ENDFOR,例10 计算并输出1100中整数的平方根,要求每屏20个数。CLEARNum=1DO WHILE Num100WAIT 继续吗(Y/N)?TO Anser WINDOWSIF UPPER(Anser)=NENDIFENDIFNum=Num+1ENDDO,例11 计算1-100之间所有奇数之和。CLEARs=0FOR x=1 TO 100 STEP 2s

7、=s+xENDFOR?1-100之间所有奇数之和为:,s,例12 编写程序显示学生基本信息中入学成绩在570分以上的学生人数。STORE 0 TO X USE 学生 SCAN IF 入学成绩=570 X=X+1 ENDIF ENDSCAN?X,例13 求 1!*3!*9!的值,要求使用DO while结构。m=1s=1do while m=9I=1p=1do while I=Mp=p*II=I+1enddos=s*pm=m*3enddo?1!*3!*9!=,s,例14 设计在学生中查找学号的程序,直到输入“#”停止use 学生accept 请输入要查找的学号 to xh do while xh

8、!=#locate for 学号=xhif found()?学号,姓名else?无此学号endifaccept 请继续输入要查找的学号 to xh enddo?谢谢使用此系统use,程序设计例题,例15 求020之间奇数之和、偶数之积。STORE 0 TO N,X STORE 1 TO Y DO WHILE N20 N=N+1 IF.not.INT(N/2)=N/2 X=X+N,程序设计例题,ELSE Y=Y*N ENDIF ENDDO?020之间奇数之和为:,X?020之间偶数之积为:,Y CANCEL,程序设计例题,例16 显示入学成绩大于550分的学生信息Use 学生Locate for

9、 入学成绩550 dispDo while not eof()ContinueDispEnddo,例17 求 1+2!+3!+4!+20!,问题分析:该题用循环嵌套(双重循环)来实现。内循环求每个阶乘,外循环对每个阶乘进行累加。程序如下:Clear S=0 N=1 Do while N=20 T=1 I=1,程序设计例题,Do while I=N T=T*I I=I+1 ENDDO S=S+T N=N+1 ENDDO?S=,S Cancel,例18 键盘输入一个汉字字符串,逆向输出该字符串(如:输入“勇夺金牌”,输出“牌金夺勇”)clearaccept 请输入字符to abcfor I=len

10、(abc)-1 TO 1 STEP-2?SUBSTR(abc,I,2)endfor,例19 打印图形clearfor I=1 to 5?space(5-I)for j=1 to I?str(I,1)endfor?endfor,例20 打印图形clear?space(5)+#?for I=1 to 5?space(5-I)?#for j=1 to 2*I-1?*endfor?#?endfor,例21 编写能完成输出直角三角形(如下图)的程序。*CLEARFOR I=1 TO 5FOR J=6-I TO 1 STEP-1?*ENDFOR?ENDFOR,例22 显示九九表的程序。cleaFor a=

11、1 to 9 for b=1 to a c=a d=b e=a*b?str(c,1),*,str(d,1),=,str(e,2),space(2)ENDfor?ENDfor CANCEL,程序设计例题,例23 求两个数中较大的数。编写程序如下:CLEARINPUT INPUT A:TO AINPUT INPUT B:TO BIF AB X=AELSE X=BENDIF?X,程序设计例题,例24 从键盘输入10任意数,并将10个数按从小到大的顺序输出。CLEARDIMENSION X(10)FOR I=1 TO 10X(I)=0II=STR(I,2)Input 请输入第+II+个数据 to x(

12、I)ENDFOR,程序设计例题,FOR I=1 TO 10FOR J=I+1 TO 10IF X(I)X(J)T=X(I)X(I)=X(J)X(J)=TENDIFENDFORENDFORFOR I=1 TO 10?X(I)ENDFOR,例25 计算并输出1100中整数的平方根,要求每屏20个数。编写程序如下:SET TALK OFF CLEAR Num=1DO WHILE Num100 WAIT 继续吗(Y/N)?TO Anser WINDOWS IF UPPER(Anser)=N ENDIF ENDIF Num=Num+1ENDDOSET TALK ON,程序设计例题,例26 计算1-100

13、之间所有奇数之和。编写程序如下:CLEARs=0FOR x=1 TO 100 STEP 2 s=s+xENDFOR?1-100之间所有奇数之和为:,s,例27 编写程序显示学生基本信息中入学成绩在570分以上的学生人数。SET TALK OFF STORE 0 TO X USE 学生 SCAN IF 入学成绩=570 X=X+1 ENDIF ENDSCAN?X RETURN,例28 求 1!*3!*9!的值,要求使用DO whileenddo结构m=1s=1do while m=9I=1p=1do while I=Mp=p*II=I+1enddos=s*pm=m*3enddo?1!*3!*9!

14、=,sreturn,例29 设计在学生中查找学号的程序,直到输入“#”停止use 学生accept 请输入要查找的学号 to xh do while xh!=#locate for 学号=xhif found()?学号,姓名else?无此学号endifaccept 请继续输入要查找的学号 to xh enddo?谢谢使用此系统use,例30 从键盘输入三角形的边长,输入边长满足两边之和大于第三边,且为正值。计算并输出三角形的面积;若不满足以上条件,显示输出不能构成三角形。将面积值存入变量AREA中。请按照题目要求,在下面编写程序代码。INPUT TO AINPUT TO BINPUT TO C

15、?三角形面积为,FUN(A,B,C)YZJ()RETURNFUNCTION FUN(a,b,c)AREA=-1*Program*End*RETURN AREA,FUNCTION YZJ()USE INLOCAT FOR TIHAO=1IF FOUND()A=N1B=N2C=N3O=FUN(A,B,C)DO YZJ1 WITH OELSE?试题输入文件已损坏,请重新配置考试环境ENDIFRETURN答案s=(a+b+c)/2if a+bc and a+cb and b+ca and a0 and b0 and c0area=sqrt(s*(s-a)*(s-b)*(s-c)Endif,例31 利用

16、循环程序输出图形:*4*333*22222*1111111*并将最后一行存入变量S中 请按照题目要求,在下面编写程序代码。SET TALK OFFSET LOGERRORS ONS=*Program*End*,DO YZJ15 WITH SSET TALK ON答案FOR N=1 TO 4?SPACE(4-N)FOR M=1 TO 2*N-1?STR(4-N+1,1)ENDFORENDFORS=1111111,习题求1到100的奇数积,偶数和求1+3+5+99之和统计300到600之间(闭区间)中可被3整除的数的个数通过键盘输入四个数,求出其中最小的数显示100以内6的倍数,并求出这些数的和将

17、学生表第一条记录和最后一条记录的“姓名”字段内容互换。通过键盘输入二十个学生成绩,按从高到低顺序排列,CLEARA=YB=XM=X+YX=9Y=2Z=%?A+B,&A*&B?&M,&M.&Z.YRETURN,读程序写结果例题,读程序写结果SET TALK OFFCLEARA=5B=20DO SUB?A,BRETURNPROCEDURE SUBPRIVATE BA=10B=15?A,BRETURN,下列程序运行后,屏幕上显示的结果是:X=1Y=2Z=0DO SUB1M=X+Y+Z?MRETURNPROCEDURE SUB1PRIVATE X,Y,MX=10Y=20Z=30M=X+Y+Z?MEND

18、PROC,读程序写结果CLEARA=YB=XM=X+YX=9Y=2Z=%?A+B,&A*&B?&M,&M.&Z.Y,读程序写结果CLEARA=5B=20DO SUB?A,BRETURNPROCEDURE SUBPRIVATE BA=10B=15?A,BRETURN,下列程序运行后,屏幕上显示的结果是:X=1Y=2Z=0DO SUB1M=X+Y+Z?MRETURNPROCEDURE SUB1PRIVATE X,Y,MX=10Y=20Z=30M=X+Y+Z?MENDPROC,表单设计例题,例一 制作如图表单注意事项:选中粗体或斜体复选框时,label1中的字体会成为粗体或斜体。,*check1(粗

19、体)复选框的interactivechange代码if this.value=1 thisform.label1.fontbold=.t.else thisform.label1.fontbold=.f.Endif*check2(斜体)复选框的interactivechange代码if this.value=1 thisform.label1.fontItalic=.t.else thisform.label1.fontItalic=.f.endif,例二 制作如图表单注意事项:使用页框,本页是第一页,用三个线段控件构成三角形,例二 制作如图表单注意事项:使用页框,本页是第二页,放置形状控件,

20、其curvature为99,高宽相等。,例二 制作如图表单注意事项:使用页框,本页是第三页,放置选项按钮组控件,buttoncount属性决定了按钮数量,要求设置热键(如第一个的caption应为:农大(n)。,例三 制作如图表单(本图为设计时刻的表单)注意事项:放置两个label和一个timer。并设置timer的 interval为500(仅供参考),例三 制作如图表单(本图为运行时刻的表单)Timer1的timer代码:thisform.label1.caption=dtoc(date()thisform.label2.caption=time()问题:timer为什么看不见了,是否可称

21、它为不可见对象,例四 制作如图表单(本图为设计时刻的表单)要求设置text1的forecolor为红色text2的passwordchar为“*”form1的closable为.f.form1的minbutton为.f.退出按钮具有关闭表单的功能,例四 制作如图表单(本图为运行时刻的表单),程序填空例题,题目:下面程序是计算1+3+5+99之和的程序。请在【】处添上适当的内容,使程序完整。SET TALK OFF*SPACE*【?】*SPACE*FOR I=1 TO 99【?】S=S+IENDFOR*SPACE*?结果=,【?】RETURNSET TALK ON填空答案:1.s=0 2.ste

22、p 2 3.s,题目:在XSDB.DBF数据表中查找学生王迪,如果找到,则显示:学号、姓名、英语,生年月日,否则提示查无此人!。请在【】处添上适当的内容,使程序完整。*SPACE*【?】XM=王迪*SPACE*【?】姓名=XMIF FOUN()*SPACE*【?】学号,姓名,英语,生年月日ELSE?查无此人!ENDIF填空答案:1.USE XSDB 2.locate for 3.display,题目:依次显示XSDB.DBF数据表中的记录内容。请在【】处添上适当的内容,使程序完整。*SPACE*【?】*SPACE*DO WHILE【?】DISP*SPACE*【?】ENDDOUSE RETURN

23、填空答案:1.use xsdb 2.not.eof()3.SKIP,题目:求1到50的累加和(S=1+2+3+.+50)并显示。请在【】处添上适当的内容,使程序完整。*SPACE*【?】I=1*SPACE*DO WHILE【?】H=H+I*SPACE*【?】ENDDO?HRETURN填空答案:1.H=0 2.I=50 3.I=I+1,题目:通过循环程序输出图形:1 321 543217654321FOR N=1 TO 4*SPACE*【?】*SPACE*FOR M=1 TO【?】?ENDFORFOR M=1 TO 2*N-1*SPACE*?STR(【?】,1)ENDFORENDFOR1.?2.

24、8-N*2 3.2*N-M,程序改错例题,题目:将XSDB.DBF表中奖学金超过60元的学生姓名和奖学金显示在屏幕上。注意:不可以增加或删除程序行,也不可以更改程序的结构。USE XSDB*FOUND*IF 奖学金60 DO WHILE.NOT.EOF()*FOUND*?姓名=+姓名,奖学金=+奖学金 CONTENDDOUSE错误答案:1.LOCATE FOR 奖学金60 2.?姓名=+姓名,奖学金=+STR(奖学金,4,1),题目:通过键盘输入一个数N,计算22+44+NN 的值并显示输出。注意:不可以增加或删除程序行,也不可以更改程序的结构。T=0I=2INPUT N=to N*FOUND

25、*DO WHILE.NOT.EOF()T=T+II*FOUND*I=I+TENDDO?TOTAL=,T错误答案:1.DO WHILE I=N 2.I=2+I,题目:通过字符串变量操作先竖向显示“伟大祖国”,再横向显示“祖国伟大”。STORE 伟大祖国TO XY*FOUND*N=0DO WHILE N8?SUBS(XY,N,2)N=N+2ENDDO?*FOUND*?SUBS(XY,4,4)?SUBS(XY,1,4)错误答案:1.N=1 2.?SUBS(XY,5,4),题目:在XSDB.DBF表中统计法律和中文两个系的总人数和奖学金总额。注意:不可以增加或删除程序行,也不可以更改程序的结构。USE

26、 XSDBSTORE 0 TO R,SDO WHILE.T.*FOUND*IF 系别=法律.AND.系别=中文STORE S+奖学金 TO SR=R+1ENDIF SKIP,*FOUND*IF.NOT.FOUN()EXITENDIFENDDO?S,RUSE错误答案:1.IF 系别=法律.OR.系别=中文 2.IF EOF(),题目:以下程序输出如下图所示的图形。*!$!*!$!$!$*!$!$!*!$!$!$!$!$注意:不可以增加或删除程序行,也不可以更改程序的结构。SET TALK OFFI=4DO WHILE I10*FOUND*IF INT(I/2)=I/2 I=I*2ELSEI=I-1ENDIFFOR J=1 TO I,*FOUND*IF J/2=0?!ELSE?$*FOUND*ENDDOENDFOR?ENDDORETURN错误答案:1.IF INT(I/2)I/2 2.IF J%2=1 3.ENDIF,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号