VFP趣味编程:盲人裁判的判断

     关于vfp的上机练习题已经编写完成很久了,学生们都反复练习过。本人一直就很想将其中的“趣味编程”部分整理出来,与广大网友分享。今天终于有时间可以完成这个愿望了,下面用九个篇幅来介绍九个有趣的问题。

甲乙两人在进行射击气球比赛,裁判员却是一位盲人。10只气球全部打破了后,裁判问:“请把甲打破的气球数乘以2,把乙打破的气球数乘以3,再把两个结果相加,请把这个结果告诉我。”乙说“26。”裁判说,我已经知道你们各打了几只气球了。请问,盲人裁判是如何知道的呢?

从上面的论述中我们已经知道,设甲打破a个气球,乙就打破10-a个,并且还有一个条件2a+3(10-a)=26。按照人类的解法,直接可以解出a=4。但用电脑又如何解决呢?

a有很多可能,根据题意可以是0-10的任何值,(为什么可以是0?因为这表示甲一个气球都没打破,乙打破了10),值比较多,我们用循环结构,让电脑在所有可能的方案中进行选择。但怎样判断些值中哪些不符合题意呢?从题目中找到第二个满足条件2a+3(10-a)=26,如果条件成立,就输出a,否则不用输出a,继续下一个a的判断。当然要注意将2a+3(10-a)=26改写成VFP表达式。 

通过分析,程序的整体结构是一个循环,循环内容有一个分支。源程序ex5_1.prg如下:

 

SET  TALK  OFF
FOR  a = 0   TO   10
    
IF  a * 2 + ( 10 - a) * 3 = 26
      ?  
" 甲打破 " + STR (a, 2 ) + " 个气球, "
     ?? 
" 乙打破 " + STR ( 10 - a, 2 ) + " 个气球。 "
  ENDIF
ENDFOR
RETU

结论:电脑解题和人类解题是两种不同的思维方式,人类善于直接通过思维推导得出结果,电脑则长于在大量重复的事实中通过笨拙的一丝不苟的努力来发出自己的目标;所以要编写程序的时候要注意改变思维方式,如果思维方式不发生改变,可能永远也写不出程序来的。

发布了24 篇原创文章 · 获赞 5 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/cdbqss1/article/details/1547210