现有十二个小球,其中一个球的重量与其它十一个的重量不相同,但不知道是轻还是重。试用天平称三次,把这个非标准球找出来,并指出它比标准球是轻还是重。

现有十二个小球,其中一个球的重量与其它十一个的重量不相同,但不知道是轻还是重。试用天平称三次,把这个非标准球找出来,并指出它比标准球是轻还是重。

要求:

a).自行定义输入输出形式/格式,用嵌套的选择结构编写程序;

b).调试程序时,必须把十二个球或轻或重共24种可能性都找出来。

 这是我学习C语言的实验题,刚开始看到的时候,就已经有思路了,因为这个数学问题以前就已经知道了,我们要做的就是如何把它用程序语言来实现。

 首先明确一下,这个题有多种解法,我用了我自己觉得最容易理解和讲解的方法。


先来说一下具体思路:

首先把球编为1-12号并分成三组(1,2,3,4)、(5,6,7,8)、(9,10,11,12)。

第一次称量:(1,2,3,4)vs(5,6,7,8)

 有三种结果:1、相等,则说明那个非标准球在(9,10,11,12)中

              第二次称量:(1,2,3)VS(9,10,11)

               又有三种结果:1、相等,则说明9,10,11号都为标准球,即12号为非标准球。

                                第三次称量:从1-11号取一个球与12号称量得出轻重。

                             2、大于,则说明(9,10,11)其中一个为非标准球,且确定为轻球。

                               第三次称量:(9)vs(10)相等则11为非标准球,否则较轻者为非标准球。

                             3、小于,则说明(9,10,11)其中一个为非标准球,且确定为重球。

                               第三次称量:(9)vs(10)相等则11为非标准球,否则较重者为非标准球。

             2、大于,即不相等则说明非标准球在(1,2,3,4)和(5,6,7,8)中

               第二次称量:(4,5,6)vs(7,8,9)

                 又有三种结果:1、相等,则说明非标准球在(1,2,3)中,且确定为重球

                                       (因为第一次称量结果为大于)

                                 第三次称量:(1)vs(2)相等则3为非标准球,否则较重者为非标准球。

                               2、大于,则说明非标准球在(4,7,8)中,

                                        且若是4号则为重球,若是7号或8号则为轻球

                                        因为((1,2,3,4)>(5,6,7,8)且(4,5,6)>(7,8,9))

                                 第三次称量:(7)vs(8)相等则4为非标准球,否则较轻者为非标准球

                               3,、小于,则说明非标准球在(5,6)中,且确定为轻球

                                         因为((1,2,3,4)>(5,6,7,8)且(4,5,6)<(7,8,9))

                                 第三次称量:(5)vs(6)较轻者为非标准球

             3、小于,即不相等则说明非标准球在(1,2,3,4)和(5,6,7,8)中

                                    第二次称量:(4,5,6)vs(7,8,9)

                又有三种结果:1、相等,则说明非标准球在(1,2,3)中,且确定为轻球

                                       (因为第一次称量结果为小于)

                                第三次称量:(1)vs(2)相等则3为非标准球,否则较轻者为非标准球。

                               2、小于,则说明非标准球在(4,7,8)中,

                                        且若是4号则为轻球,若是7号或8号则为重球,

                                        因为((1,2,3,4)<(5,6,7,8)且(4,5,6)<(7,8,9))

                                第三次称量:(7)vs(8)相等则4为非标准球,否则较重者为非标准球

                               3、大于,则说明非标准球在(5,6)中,且确定为重球

                                        因为((1,2,3,4)<(5,6,7,8)且(4,5,6)>(7,8,9))

                                 第三次称量:(5)vs(6)较重者为非标准球


      该程序的源代码在下一篇附上。



你可能感兴趣的:(C语言)