VFP6-综合程序设计(Y).ppt
数据库应用(VFP6.0),Company Logo,第四章 程序设计控制结构,第三节 综合程序设计,第四章 程序设计控制结构,杭商院计算机教研室,Company Logo,综合程序设计,数值,整除算法:,求余数算法,累加,累乘,涉及的主要函数及运算符:MOD(),INT(),%,INT(X/Y)=X/Y MOD(X,Y)=0X%Y=0,X-Y*INT(X/Y)=0,X-INT(X/Y)*Y MOD(X,Y)X%Y,S=(0)(DO WHILE 或FOR)S=S+A,S=(1)(DO WHILE 或FOR)S=S*A,DEMO-整除1,给定正整数的所有因子,FOR I=2 TO N-1IF N%I=0?IENDIFENDFOR,1.求因子的和?2.求因子的积?3.求因子的平方和?4.因子连乘式?P199T5-135.判断是否是完数?,输出给定正整数的质数因子,I=2DO WHILE I=N IF N%I=0?STR(I,6)N=INT(N/I)LOOP ENDIF I=I+1ENDDO,求质数因子!,DEMO-整除2,最大公约数,最小公倍数,X=MIN(M,N)FOR I=X TO 1 STEP-1 IF M/I=INT(M/I)and N%I=0 GYS=I EXIT ENDIFENDFOR,既能被M整除又能被N整除的最大值,Y=MAX(M,N)FOR J=1 TO MIN(M,N)GBS=J*YIF GBS%X=0 EXITENDIFENDFOR,既能整除M又能整除N的最小值,如何既求最大公约数又求最小公倍数?GBS=M*N/GYS,DEMO-求余数1,典型算法求数值型数据的每个数字;书P178例题4.30,R=MOD(N,10),N=INT(N/10),结束,DEMO-求余数2,如求给定正整数的每个数字之和,如1234:1+2+3+4=10算法:,如果给定的不是正整数而是实数?如1234.567?解题思路:把实数变成正整数算法:,DO WHILE N0 R=MOD(N,10)S=S+RN=INT(N/10)ENDDO,先求余数,再取整抛个位,INPUT M=TO MN=MDO WHILE INT(N)N N=N*10ENDDO,如果求的不是和,而是最大、最小数?包含指定数码的个数?,DEMO-求极值问题,求最大最小值给定一组数;(程序填空题DEMO1)从键盘输入n个数;(程序填空题DEMO1)2维数组;(程序填空题DEMO2)排序2个数的排序;3个数的排序;(P199T5-10),DEMO-累加、累乘,累加、累乘的基本算法,典型例题:偶数个数P199T5-8;P193T3-3(讲)、P196T4-5、P199T5-10,字符,常用算法及函数字符比较包含比较:$或 AT()精确比较:=或SET EXACT ON字符转换大小写:UPPER()、LOWER()类型:VAL()、ASC()、CTOD()取子串:LEFT()、RIGHT()、SUBSTR()字符截取空格:TRIM()、ALLTRIM()字符连接:+-其他相关函数:LEN(),DEMO-倒置字符串,P181例题4.31,如ABCD-DCBA从字符由后向前一个一个取后连接;原字符串L第L个字符倒置后字符串ABCD4 D DABCD3 C DCABCD2 B DCBABCD1 A DCBA从字符由前向后一个一个取后连接;S=R+S,p=len(ch),R=Substr(ch,L,1),S=S+R,DEMO-数字字符转换,P183例题4.33 数字中文大写金额1023.44 1023.45102345零壹贰叁肆伍陆柒捌玖分角元拾佰仟万拾佰仟亿数字末位金额单位中文大写1023455111伍分10234 493肆角伍分1023 375叁元肆角伍分102 257贰拾叁元肆角伍分10 019零贰拾叁元肆角伍分1 1311壹仟零贰拾叁元肆角伍分,DEMO-其他字符,密码翻译P194T4-1。读程序写结果DEMO日期转换成中文大写形式P200T5-12(上机已讲)图形输出问题图形的形状输出的内容(转换为字符型数据输出)九九乘法表P200T5-7、星花输出P202、机考题一题,表,相关知识点表文件操作:USE表内容处理:REPLACE查询LOCATE FOR、SEEK 统计COUNT SUM AVERAGE表内容浏览SCAN、DO WHILE!EOF()典型例题记录指针移动P80例题2.23查询P154例题4.7、P155例题、P159例题4.15、4.16、4.17统计P185例题4.33显示输出学生表中每个班级的男女同学的奖学金总额(经济09甲、国贸09甲讲)。,其他,4.3.3宏替换&、名表达式()和EVALUATE()的运用(P194T3-4)P186例4.34。显示指定表中的全部字段名,并由用户输入显示表信息的条件,最后列表显示满足条件的记录(字段数可以用函数FCOUNT()得到)。ACCEPT 请输入表名(扩展名略):TO TBNIF FILE(&TBN.DBF)USE(TBN)ELSEWAIT 指定的表不存在!TIMEOUT 5RETURNENDIFACCEPT 请输入显示表信息的条件表达式:TO EXPRLIST FOR EVALUATE(EXPR),程序填空题DEMO1,SET TALK OFFCLEARINPUT“N=“TO NINPUT“A=“TO ASTORE A TO X,Y(1)P=N-2(2)INPUT“B=“TO BS=S+B(3)X=BENDIF(4)Y=BENDIFENDFORR=S-X-Y?R/PSET TALK ON,A.S=A B.S=0 C.S=N D.I=1,A.FOR I=1 TO N B.FOR I=2 TO N C.DO WHILE I=N D.FOR I=1 TO A,A.IF XB D.IF YX,A.IF XB D.IF YX,输入n个数,去掉最大、最小数,然后求平均值(练习P147-8),Refs:1.从键盘输入n个数,并输出最大和最小值;P204-3-12.从键盘输入3行4列的矩阵,查找并显示其中最大的元素及其下标。,程序填空题DEMO2,19,SET TALK OFFCLEAR DIME A(3,4)FOR L=1 TO 3 FOR J=1 TO 4 INPUT“P=”TO A(L,J)ENDFORENDFORSTORE 1 TO X,Y(1)FOR L=1 TO 3 FOR J=1 TO 4 IF(2)M=A(L,J)X=(3)Y=(4)ENDIF ENDFORENDFOR,A.M=0 B.M=A(X,Y)C.M=1 D.M=A(L,J),A.A(L,J)M B.MA(L,J)C.A(X,Y)M D.MA(X,Y),A.X+1 B.L C.Y+1 D.J,A.X+1 B.L C.Y+1 D.J,从键盘输入3行4列的矩阵,查找并显示其中最大的元素及其下标。,读程序写结果DEMO,20,*主程序*ACCEPT 请输入字符串:TO str1?原来的字符串为:,str1str2=convert(str1)?倒置后字符串为:,str2,*字符串倒置函数*FUNC convertPARA con_str1ch=SPACE(0)&附初值k=LEN(con_str1)&取字符串长度DO WHILE k0 ch1=SUBSTR(con_str1,k,1)ch=ch+ch1 k=k-1ENDDOcon_str1=chRETURN con_str1ENDFUNC,提示:如果要将一个字符串改为另一个通常使用字符串的ASCII码实现如:对字符串加密,算法ASCII码+2E.g.I am a students.K co c uvwfgvuP153三-1(1),Thank You!,