第4章结构化程序设计讲述.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 思考:设计一个函数GYS,找出两数m,n的最大公约数 M,N同时被 i 整除,则 i 为公约数 * 4.3.4 自定义函数 【例4.33】编写一个自定义函数,自动返回给定字符串的倒置字符串,如:字符串“ABCD”,倒置后的字符串为“DCBA”。 ***** CH4-33.PRG***** FUNCTION CC 函数名称为CC PARAMETERS X 接收1个变量 C=SPACE(0) 设置结果的初值 L=LEN(X) 取字符串长度 DO WHILE L0 循环L次 Q=SUBSTR(X,L,1) 逐个取出字符 C=C+Q 倒置 L=L-1 ENDDO RETURN C 输出结果 ENDFUNC Visual FoxPro的命令窗口键入命令: SET PROCEDURE TO CH4-33 ?CC(DOG) 结果为:GOD * 思考:如何实现汉字回文 离别惜残枝 枝残惜别离 * 4.3.4 自定义函数 【例4.34】编写一个自定义函数,用来统计一个正整数的各位数码之和。再编写一个程序利用该自定义函数将所有四位数中数码之和等于4的数显示(如:四位数1012的各位数码和为1+0+1+2=4,需要输出)出来。 分析: 所有四位数包括1000~9999,用循环FORI=1000 TO 9999,逐个统计四位数的数码之和,如果等于4则显示该数。自定义函数作为一个过程放在程序的后面。程序及运行结果如图4-30所示。 * * 4.3.4 自定义函数 2. 自定义函数的调用与参数传送 (1) 调用 自定义函数虽然是一个子程序,但是不能用DO命令调用。而只能像系统函数一样用输出语句(?、??)输出或出现在表达式中。 (2) 参数传送 自定义函数的参数传送既可以用传值的方式,也可以用引用的方式。缺省是传值的方式。 可用命令SET UDFPARMS TO VALUE/ REFERENCE 改变参数的传送方式(VALUE是传值的方式,REFERENCE是引用的方式)。 也可以在参数变量前冠以@,如:MYUDF(@A),那么将采用引用的方式。 * 自定义函数的调用与参数传送 --引用方式 设计一个函数F,可以计算半径为R的圆的圆周长、圆面积 * 4.3.4 自定义函数 【例4.35】编写自定义函数,判断一元二次方程式ax2+bx+c=0是否有实数根。如果有实数根,可通过参数的引用方式将实数根带出来。 分析:像系统函数一样,自定义函数的输出结果只有一个值。本题的输出结果是逻辑值.T.或.F.。但自定义函数的参数有三个,通过在函数参数前加@的方式,把求解的实数根带出来。 * 4.3.4 自定义函数 *****CH4-35.PRG ***** SET TALK OFF CLEAR INPUT X= TO A 用键盘接收一元二次方程的3个参数 INPUT Y= TO B INPUT Z= TO C IF !ABC(@A,@B,C) X、Y是引用方式传递参数 ? 复根! ELSE ?X1=,A ?X2=,B ENDIF FUNCTION ABC PARAMETER A,B,C D=B*B-4*A*C IF D0 RETURN .F. ELSE X1=(-B+SQRT(D))/(2*A) X2=(-B-SQRT(D))/(2*A) A=X1 B=X2 RETURN .T. ENDIF ENDFUNC * 4.3.4 自定义函数 【例4.36】编写一个自定义函数,将数字金额转换为中文大写金额。设最高位考虑到亿,最低位考虑到分(如:数字金额为1023.445,转换为中文大写金额为:壹仟零佰贰拾叁元肆角伍分)。 分析:先把金额四舍五入保留2位小数,再*100变为整数,从右到左逐个取出数码,转换为大写,同时加上汉字单位(分、角、元等)。当取剩的值等于0时即完成。本例采用永真循环,循环体内设计的出口是:当取剩的值等于0时退出循环。 * 4.3.4 自定义函数 将数字金额转换为中文大写金额。 FUNCTION CASH PARAMETERS X X接收数值表达式的值 C1=零壹贰叁肆伍陆柒捌玖 转换用的大写数字 C2=分角元拾佰仟万拾佰仟亿 转换用的汉字单位 M=ROUND(X,2) 将X进行四舍五入保留两位小数处理 M=M*100

文档评论(0)

70后老哥 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档