• 236.50 KB
  • 34页

专升本-计算机课件.ppt

  • 34页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
程序设计教程VisualFoxpro VisualFoxPro的数据、函数及其运算本章知识要点函数强化各种判断语句。各种循环语句计划课时:3课时。 一、函数强化(1)取x的整数部分int(x)(2)取x的小数整数x-int(x) (3)取n的个位数y=n%10(4)取n的十位数Y=int(n/10)%10t=int(n/10)y=t%10推广(5)取n的百位数Y=int(n/100)%10t=int(n/100)y=t%10 二、各种判断语句(1)判断N是否为偶数(即是2的倍数)Ifn%2=0?n,”是偶数”endif(2)判断N是否为奇数(即不是2的倍数)Ifn%2=1?n,”是奇数”endifIfint(n/2)=n/2?n,”是偶数”endifIfint(n/2)<>n/2?n,”是奇数”endif或者或者 (3)判断N是否为100的倍数Ifint(N/100)=N/100?n,”是100的倍数”endif推广(4)判断N是否为M的倍数Ifint(N/M)=N/M?n,”是M的倍数”endif 推广(5)判断Y是否为闰年分析:闰年是4的倍数,但不是100的倍数;或者是400的倍数。Ifint(Y/4)=Y/4.and.int(Y/4)<>Y/4.or.int(Y/400)=Y/400?Y,”是闰年”Else?Y,”不是闰年”endif 推广(6)判断三位数m是否为水仙花数分析:水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如:153是一个3位数,1^3+5^3+3^3=153,四位数1634也是。P8,书上的写法不严谨。因为x=int(m/100)取百位数时,只对三位数有效。 x=int(m/100)%10&&取百位数y=int((m/10)%10)&&取十位数z=m%10&&取个位数ifx^3+y^3+z^3=m?m,”是水仙花数”else?m,”不是水仙花数”endif判断三位数m是否为水仙花数的严谨写法 (7)求自然数n(n>0)的位数个数*假如:n=123456789c=0&&用于记录位数个数dowhilen<>0ifn/10<>0&&表明个位存在c=c+1n=int(n/10)endifenddo?c (8)输出自然数n(n>0)的位数clearinput"请输入n"tondowhilen<>0ifn/10<>0c=n%10&&取个位数?cn=int(n/10)&&去掉个位数endifenddocancel 切记能用for——endfor循环,尽量用for——endfor实在不知道循环次数,才采用dowhile——enddo循环 三、各种算法1、加法格式:s=0Fori=1to100s=s+iEndfor格式:s=0Fori=1toNs=s+iEndfor扩展到N(1)求1到100的和(2)求1到100的奇数和(3)求1到100的偶数和 (4)求级数s=1+1/2-1/3+1/4-1/5+…..clears=1input"输入n:"tonfori=2tons=s+(-1)^i*1/iendfor?"s=",scancel请补充在书上P9-5分析:从第二项开始用for循环求和,分母为奇数,前面的符号为负. 2、乘法格式:s=1Fori=1to100s=s*iEndfor格式:s=1Fori=1toNs=s*iEndfor扩展到N(1)求1到100的积(即100的阶乘)(2)求1到100的奇数积(3)求1到100的偶数积 3、斐波拉西(fibnocsi)数列斐波拉西数列的定义如下:当n=1时,fin(n)=1当n=2时,fin(n)=1当n>=3时,fin(n)=fib(n-1)+fib(n-2)即后一项是前两项之和求斐波拉西数列,1,1,2,3,4,8,13,21,34……,要求以5个为一组输出前20个数。 输出格式说明f(1)f(2)f(3)f(4)f(5)f(6)f(7)f(8)f(9)f(10)f(11)f(12)f(13)f(14)f(15)f(16)f(17)f(18)f(19)f(20)以5个为一组输出:每当输出5个元素后,就输出一个换行符。 cleardimef(20)f(1)=1f(2)=1fori=3to20f(i)=f(i-1)+f(i-2)endforfori=1to20??f(i)ifi%5=0&&判断是否为5的倍数?endifendforcancel 4、求m和n的最大公约数采用辗转相除法:m除以n,得余数r;如果r不等于0,则将n赋予m,r赋予n,再用m除以n,得余数r;依次类推,直到r=0为止,此时的n就是最大公约数。 clearinput"输入m:"tominput"输入n:"ton&&m,n的值会变化,先保存下来x=my=nifn=0?"数据有错,不能为0!"exitendifr=mod(m,n)dowhiler>0m=nn=rr=mod(m,n)enddo?"最大公约数是:",n?"最小公倍数是:",x*y/n求公约数的核心程序 5、判断素数什么是素数:素数又称质数,只能被1和本身整除的数。如2、3、5、7、17、101因此判断一个素数m是否是素数,只要判断该数能不能被2到m-1之间的数整除。如果均不能被整除,则m是素数;否则,m不是素数。 写法一:设置标识变量f用于记录一个数是否为素数f=.T.是素数;f=.F.不是素数input"m="tomf=.T.&&假设m是素数fori=2tom-1ifm%i=0f=.F.&&修改f,m不是素数exitendifendfor&&循环结束后,如果f还是为.T.(值被修改),就是素数iff=.T.?"是素数"else?"不是素数"endif此程序作为一个模块,可以放在其他程序中,如11页10题。 input"m="tomfori=2tom-1ifm%i=0exitendifendforifi=m?"是素数"else?"不是素数"endif如果m是素数,则循环后,i的值为m如果m是不是素数,则中途退出循环,i的值小于m写在P.11顶部。写法二:判断素数的程序 回文数的判断“回文数”是一种数字。如:98789,这个数字正读是98789,倒读也是98789,所以这个数字就是回文数,也即对称。举例分析:121=1*100+2*10+1 clearinput"请输入一个数"toas=0x=adowhilea<>0k=a%10s=s*10+ka=int(a/10)enddoifs=x?x,"是一个回文数"else?x,"不是一个回文数"endifcancel程序 13.15百元百鸡问题原问题:公鸡5元/只,母鸡3元/只,小鸡3只/元,请问100元买100只鸡,怎么个买法?穷举法:对变量的取值进行不断的尝试,满足要求就找到了该变量。用穷举法分析:设公鸡,买了x只;母鸡买了y只;小鸡买了z只,则x+y+z=100,5*x+3*y+z/3=100x的范围:0~20y的范围:0~33z的范围:0~100(其实,z还是3的倍数) clearforx=0to20fory=0to33forz=0to100ifx+y+z=100andx*5+y*3+z/3=100?x,y,zendifendforendforendforcancel补充在书上P13页顶部程序 同类型题:2010年考题已知笼中有鸡和兔共36只,他们的脚共有100只,编程计算鸡和兔分别有多少只?分析:设鸡,买了x只;兔买了y只则x+y=36,2*x+4*y=100x的范围:0~36y的范围:0~25 clearforx=0to36fory=0to25ifx+y=36andx*2+y*4=100?x,y,zendifendforendforcancel程序 dowhile条件为真循环题模板如下:dowhile条件设为真<语句序列1>if退出循环的条件Pexitendif<语句序列2>enddo (1)编程计算,计算表达式clears=0fori=1tons=s+1/iendfor?scancel (2)编程计算,计算表达式clears=0i=1dowhile.T.t=1/iift<10^(-5)exitendifs=s+ti=i+1endfor?scancel 13.17docasecaseb>="A"andb<="Z"orb>="a"andb<="z"x=x+1caseb>="0"andb<="9"y=y+1otherwisez=z+1endcaseendcase