十二硬币判别代码人间客制作国外流行的12个硬币问题:12硬币中可能有一个假的,而且不知道假币比真币重还是轻,给你一架天平,天平没有示数,只能判断是平衡还是不平,且只准称三次,让你判断是否有假币;如果有,找出来。解法思想如下:第一步:任选8个比较,如选:⑴⑵⑶⑷比⑸⑹⑺⑻一、若一样重,则假币在⑼~⑿中,第二步:⑼⑽比⑾⑴1.若一样重,则可能的假币为⑿。则第三步:⑴vs⑿1)若一样重,则没有假币;2)不一样重,则假币为⑿:如果(1)(12),则假币轻,反之,假币重;2.若⑼⑽重,则第三步:⑼比⑽1)若一样重,则假币为⑾(较轻)2)不一样重,则假币为⑼、⑽中较重者3.若⑼⑽轻,则第三步:⑼比⑽1)若一样重,则假币为⑾(较重)2)不一样重,则假币为⑼、⑽中较轻者二、若⑴⑵⑶⑷重,则第二步:⑴⑵⑸比⑶⑷⑹1.若一样重,则假币在⑺⑻中,第三步:⑺比⑻假币为⑺、⑻中较轻者2.若⑴⑵⑸端较重,则假币在⑴⑵⑹中,第三步:⑴比⑵1)若一样重,则假币为⑹(较轻)2)不一样重,则假币为⑴⑵中较重者3.若⑶⑷⑹端较重,则假币在⑶⑷⑸中,第三步:⑶比⑷1)若一样重,则假币为⑸(较轻)2)不一样重,则假币为⑶、⑷中较重者三、若⑴⑵⑶⑷轻,则与上面类似,第二步:⑴⑵⑸比⑶⑷⑹1.若一样重,则假币在⑺⑻中,第三步:⑺比⑻假币为⑺、⑻中较重者2.若⑴⑵⑸端较轻,则假币在⑴⑵⑹中,第三步:⑴比⑵1)若一样重,则假币为⑹(较重)2)不一样重,则假币为⑴⑵中较轻者3.若⑶⑷⑹端较轻,则假币在⑶⑷⑸中,第三步:⑶比⑷1)若一样重,则假币为⑸(较重)2)不一样重,则假币为⑶、⑷中较轻者在科技发达的时代,我们都不愿意去做这样繁琐的比较,而是想借助于计算机的威力,下面给大家介绍一种方法,可以在很短的时间内完成中比较。当然,这类问题转化到编程上去后,主要考查的是大家的编程思想,而不再是12硬币问题本身了,因为12个硬币的重量需要大家自己去输入,这些数据只是为了检验大家程序的正确与否。下面是该问题的代码:#includestdio.hvoidmain(){inti;floata[12];for(i=0;i12;i++)scanf(%f,&a[i]);if(a[0]+a[1]+a[2]+a[3]==a[4]+a[5]+a[6]+a[7]){if(a[0]+a[1]+a[2]==a[8]+a[9]+a[10]){if(a[8]==a[11])printf(Thereisnospecialcoin!\n);elseif(a[8]a[11])printf(Thereisaspecialcoin:%f(12)andit'slighterthanothers.\n,a[11]);elseprintf(Thereisaspecialcoin:%f(12)andit'sheavierthanothers.\n,a[11]);}elseif(a[0]+a[1]+a[2]a[8]+a[9]+a[10]){if(a[8]==a[9])printf(Thereisaspecialcoin:%f(11)andit'slighterthanothers.\n,a[10]);elseif(a[8]a[9])printf(Thereisaspecialcoin:%f(10)andit'slighterthanothers.\n,a[9]);elseprintf(Thereisaspecialcoin:%f(9)andit'slighterthanothers.\n,a[8]);}else{if(a[8]==a[9])printf(Thereisaspecialcoin:%f(11)andit'sheavierthanothers.\n,a[10]);elseif(a[8]a[9])printf(Thereisaspecialcoin:%f(9)andit'sheavierthanothers.\n,a[8]);elseprintf(Thereisaspecialcoin:%f(10)andit'sheavierthanothers.\n,a[9]);}}elseif(a[0]+a[1]+a[2]+a[3]a[4]+a[5]+a[6]+a[7]){if(a[0]+a[2]+a[5]==a[1]+a[4]+a[8]){if(a[6]==a[7])printf(Thereisaspecialcoin:%f(4)andit'sheavierthanothers.\n,a[3]);elseif(a[6]a[7])printf(Thereisaspecialcoin:%f(8)andit'slighterthanothers.\n,a[7]);elseprintf(Thereisaspecialcoin:%f(7)andit'slighterthanothers.\n,a[6]);}elseif(a[0]+a[2]+a[5]a[1]+a[4]+a[8]){if(a[0]==a[2])printf(Thereisaspecialcoin:%f(5)andit'slighterthanothers.\n,a[4]);elseif(a[0]a[2])printf(Thereisaspecialcoin:%f(1)andit'sheavierthanothers.\n,a[0]);elseprintf(Thereisaspecialcoin:%f(3)andit'sheavierthanothers.\n,a[2]);}else{if(a[1]a[8])printf(Thereisaspecialcoin:%f(2)andit'sheavierthanothers.\n,a[1]);if(a[5]a[8])printf(Thereisaspecialcoin:%f(6)andit'slighterthanothers.\n,a[5]);}}else{if(a[0]+a[2]+a[5]==a[1]+a[4]+a[8]){if(a[6]==a[7])printf(Thereisaspecialcoin:%f(4)andit'slighterthanothers.\n,a[3]);elseif(a[6]a[7])printf(Thereisaspecialcoin:%f(7)andit'sheavierthanothers.\n,a[6]);elseprintf(Thereisaspecialcoin:%f(8)andit'sheavierthanothers.\n,a[7]);}elseif(a[0]+a[2]+a[5]a[1]+a[4]+a[8]){if(a[0]==a[2])printf(Thereisaspecialcoin:%f(5)andit'sheavierthanothers.\n,a[4]);elseif(a[0]a[2])printf(Thereisaspecialcoin:%f(3)andit'slighterthanothers.\n,a[2]);elseprintf(Thereisaspecialcoin:%f(1)andit'slighterthanothers.\n,a[0]);}else{if(a[1]a[8])printf(Thereisaspecialcoin:%f(2)andit'slighterthanothers.\n,a[1]);if(a[5]a[8])printf(Thereisaspecialcoin:%f(6)andit'sheavierthanothers.\n,a[5]);}}}部分结果的截图: