VF程序设计经典例题1.doc
如有侵权,请联系网站删除,仅供学习与交流1.2.3.4.5.6.7. VF程序设计经典例题1【精品文档】第 14 页8. 求园的面积(要求判断半径是否合理)CleaInpu r= to rIf r>0 S=3.14*r*r ?sElse ?半径错误!Endif9. 求分段函数Y的值Y=2x5 x>0x x=0| x | x<0CleaInpu x= to xIf x>0 Y=2*x+5Else If x=0Y=x ElseY=abs(x) EndifEndif?y10. 输入一个百分制成绩判断其等级(优/良/中/及格/不及格)CleaInpu cj= to cjDo case Case cj>=90?优 Case cj>=80?良 Case cj>=70?中 Case cj>=60?及格 Orth?不及格Endcase11. 输入若干个(个数不定)百分制成绩判断其等级(优/良/中/及格/不及格)CleaInpu 请输入处理几个人的成绩: to nFor i=1 to nInpu cj= to cjDo case Case cj>=90?优 Case cj>=80?良 Case cj>=70?中 Case cj>=60?及格 Orth?不及格Endcaseendfor12. 求S1+2+3. . . . . .+100CleaS=0For i=1 to 100 S=s+iEndfor?s 13. 求S1×2×3. . . . . .×100Cleap=1For i=1 to 100 p=p*iEndfor?p14. 求S1+3+5. . . . .+99CleaS=0For i=1 to 99 step 2 S=s+iEndfor?s15. 求S12+34. . . . . .100CleaS=0For i=1 to 100 S=s+(-1)(i+1)*iEndfor?s16. 求S1+1/2+2/3+3/5. . . . . .前10项之和CleaS=0A=1B=1For i=1 to 10 S=s+a/b T=a A=b B=t+bEndfor?s17. 求S1!+2!+3!. . . . . .+10!CleaS=0P=1For i=1 to 10P=p*i S=s+p Endfor?s18. 对学生表中所有入学成绩650分的学生免去贷款CleaUse 学生Scan for入学成绩>=650 .and. 贷款否=.t. Repl贷款否 with .f.EndscanUse* * * * * * * * * * * * * * * * * * * * *19. 输出图形CleaFor i=1 to 4 For j=1 to i EndforEndforCleaFor i=1 to 4 For j=1 to 4-i? &&有一个空格 Endfor For j=1 to 2*i-1 EndforEndforCleaFor i=1 to 4 For j=1 to 4-i? &&有一个空格 Endfor For j=1 to i EndforEndfor20. 判断一个整数是否素数CleaInpu x= to xFor i=2 to x-1 If mod(x,i)<>0Loop ElseExitEndifEndforIf i>x-1 ?x,是素数Else ?x,不是素数Endif21. 判断十个整数是否素数CleaFor j=1 to 10Inpu x= to xFor i=2 to x-1 If mod(x,i)<>0Loop ElseExitEndifEndforIf i>x-1 ?x,是素数Else ?x,不是素数EndifEndfor22. 找出两个数的大数和小数CleaInpu x= to xInpu y to yIf x>y ?x,大,y,小Else ?y,大,x,小Endif23. 找出三个数的最大数和最小数CleaInpu x= to xInpu y to yInpu z to zIf x<y t=xx=yy=tElse If x<z t=xx=zz=t endifendifif y<z t=yy=zz=tendif?x,是最大数,z,是最小数24. 找出十个数的最大数和最小数CleaDime a(10)For i=1 to 10 Inpu to a(i)EndforMax=a(1)Min=a(1)For i=2 to 10 If max<a(i)Max=a(i) ElseIf min>a(i) Min=a(i)Endif EndifEndfor?max,min25. 找出2×3矩阵中的最大数和最小数cleadime a(2,3)for i=1 to 2 for j=1 to 3input a(+str(I,2)+,+str(j,2)+)= to a(I,j) endforendformax=a(1,1)min=a(1,1)for i=1 to 2 for j=1 to 3if max<a(I,j) max= a(I,j)else if min> a(I,j) min= a(I,j) endifendif endforendfor?max=,max,min=,min26. 对三个整数从大到小排序ClearInput a= to aInput b= to bInput c= to cIf a<b T=a A=b B=tElse If a<c t=a A=cc=t endifendifIf b<c T=b A=c c=tendif?a,b,c27. 对十个整数从大到小排序(用选择法和起泡法两种方法)选择法:ClearDime a(10)For i=1 to 10 Input to a(i)EndforFor i=1 to 9 Max=a(i) Num=i For j=i+1 to 10If max<a(j) max=a(j) Num=jEndif Endfor If i<>num t=A(i) a(i)=a(num) a(num)=t EndifEndforFor i=1 to 10 ?a(i),' 'Endfor起泡法:ClearDime a(10)For i=1 to 10 Input to a(i)EndforFor i=1 to 9 For j=1 to 10-i If a(j)<a(j+1) t=A(j) a(j)=a(j+1) a(j+1)=t Endif endforEndforFor i=1 to 10 ?a(i),' 'Endfor28. 输出Fibonacci(斐波那契)数列的前十项ClearDime a(10)a(1)=1a(2)=1For i=3 to 10 a(i)=a(i-1)+a(i-2)EndforFor i=1 to 10 ?A(i)Endfor29. 输出杨辉三角的前十行ClearDime a(10,10)For i=1 to 10 A(I,1)=1 A(I,i)=1EndforFor i=3 to 10 For j=2 to i-1A(I,j)=a(i-1,j)+a(i-1,j-1) EndforEndforFor i=1 to 10 For j=1 to i?A(I,j) EndforEndfor30. 对2×3矩阵转置CleaDime a(2,3),b(3,2)for i=1 to 2 for j=1 to 3input to a(I,j) endforendforfor i=1 to 3 for j=1 to 2b(I,j)=a(j,i) endforendforfor i=1 to 3 for j=1 to 2?b(I,j) Endforendfor31. 求三位数中的所有水仙花数(即指一个三位数,其各位数字立方和等于该数本身)Cleafor x=100 to 999 a=int(x/100) b= mod(int(x/10),10) c=mod(x,10) if x=a*a*a+b*b*b+c*c*c ?xEndifendfor32. 求100以内的所有完数(即一个数恰好等于除它本身外的所有因子之和)Cleafor i=3 to 100 s=0 for j=1 to i-1 if mod(i,j)=0 s=s+j endif endfor if i=s ?i endifendfor 33. 已知三角形的三边(从键盘输入),求其面积(S2=p(p-a)(p-b)(p-c), p=(a+b+c)/2)Clearinput 'a=' to ainput 'b=' to binput 'c=' to cif a+b>c and a+c>b and b+c>a p=(a+b+c)/2 s=sqrt(p*(p-a)*(p-b)*(p-c) ?selse ?'三边不能组成三角形'Endif34. 求二元方程的根(分三种情况:两个不等实根,两个相等实根,无实根)cleainpu 'a=' to a &&a<>0inpu 'b=' to b &&b<>0inpu 'c=' to ci=b*b-4*a*c if i<0 ?"方程无实根!" else if i=0 r=(-b)/(2*a) ?"方程有两个相等实数根:",r else x1=(-b+sqrt(i)/(2*a) x2=(-b-sqrt(i)/(2*a) ?"方程有两个不相等实数根:",x1,x2 endifendif35. 输入任意一个五位整数,前后对应位置上的数据进行交换重新排列(即逆序排列)(例:2598448952)cleadime a(5)inpu to ba(1)=int(b/10000)a(2)=mod(int(b/1000),10)a(3)=mod(int(b/100),10)a(4)=mod(int(b/10),10)a(5)=mod(b,10)for i=1 to int(5/2) t=a(i) a(i)=a(6-i) a(6-i)=tendforc=a(1)*10000+a(2)*1000+a(3)*100+a(4)*10+a(5)?b,c36. 找出一个3x3矩阵的“鞍点”,即该位置上的元素在该行上最大,在该列上最小(也有可能没有鞍点)cleadime a(3,3) flag=.t.for i=1 to 3 for j=1 to 3 input 'a('+str(I,2)+','+str(j,2)+')=' to a(i,j) endforendfor for i=1 to 3 max=a(i,1) col=1 for j=2 to 3 if max<a(i,j) max=a(i,j) col=j endif endfor min=a(1,col) row=1 for k=2 to 3 if min>a(k,col) min=a(k,col) row=k endif endfor if max=min ?a(row,col),'是鞍点,在',row,'行',col,'列' flag=.f. endifendforif flag=.t. ?'无鞍点'endif37. 求S(n)=a+aa+aaa+.+aaa.aaa(其中有n个a)之值,a是一个数字,n和a由键盘键入(例如:2+22+222+22222+22222,此时n=5)cleainpu 'a=' to ainpu 'n=' to ns=0t=afor i=1 to n s=s+t t=a+t*10endfor?s31.把一张一元钞票,换成一分、二分和五分硬币,每种至少11枚,问有多少种方案? 13cleas=0for a=11 to 100 for b=11 to 50 for c=11 to 20 if a+2*b+5*c=100 s=s+1 endif endfor endfornext?s32.一只猴子一天从山上摘来一袋桃子,从这天开始,它每天都要把袋中的桃子平分为二堆,吃掉其中的一堆,然后再从剩下的桃中拿出一个解谗,等到第10天,它发现袋中只有一只桃可吃啦,问猴子总共摘了多少桃。 1534cleadime f(10)f(1)=1f(2)=4f(3)=10s=0for n=4 to 10f(n)=2*f(n-1)+2s=f(n)endfor?s33.已知S1=1, S2=1+2, S3=1+2+4, S4=1+2+4+8,S5=1+2+4+8+16,编制一个程序求S=S1+S2+S3+S4+S5+S20的值。 2097130cleadime f(20)f(1)=1 f(2)=2f(3)=4s=0q=0for n=1 to 20 f(n)=2(n-1) s=s+f(n) q=q+s endfor ?q