有關“樹上剩餘幾隻鳥”的問題的思考及解答
有一次,我被問到了一個貌似腦筋急轉彎的問題:“樹上有五隻鳥,獵人開槍打死了一隻,請問樹上還剩下幾隻鳥?”
對於這個問題,想必大家都有被問到過,或者是在什麼地方看到過。這個問題實際上並沒有標準答案,它考察的是一個人思維的發散程度。對於自己想到的每個答案,隻要能夠找到讓人信服的理由就可以了。
我認為,這個問題的答案可以是大於或等於0的任意一個整數,具體原因如下代碼所示:
/**********************************************************************
* 版權所有 (C)2015, Zhou Zhaoxiong。
*
* 文件名稱:AnswersOfBirds.c
* 文件標識:無
* 內容摘要:有關“樹上剩餘幾隻鳥”的問題的解答
* 其它說明:無
* 當前版本:V1.0
* 作 者:Zhou Zhaoxiong
* 完成日期:20160108
*
**********************************************************************/
#include <stdio.h>
// 重定義數據類型
typedef unsigned int UINT32;
typedef signed int INT32;
/**********************************************************************
* 功能描述:主函數
* 輸入參數:無
* 輸出參數:無
* 返 回 值:無
* 其它說明:無
* 修改日期 版本號 修改人 修改內容
* ---------------------------------------------------------------
* 20160108 V1.0 Zhou Zhaoxiong 創建
***********************************************************************/
INT32 main()
{
UINT32 iBirdsLeft = 0; // 用於表示樹上剩餘的鳥的數量
// 輸入想要的答案
printf("請輸入你想要的答案(可以輸入任意一個大於或等於0的整數): \n");
scanf("%d", &iBirdsLeft);
// 根據輸入的答案找到給出此答案的理由
switch (iBirdsLeft)
{
case 0:
{
printf("打死其中一隻鳥之後, 這隻被打死的鳥掉到了地上, 其他四隻鳥因為受到了驚嚇, 所以也飛走了, 樹上一隻鳥也沒有了!\n");
break;
}
case 1:
{
printf("打死其中一隻鳥之後, 這隻被打死的鳥還掛在樹上, 其他四隻鳥因為受到了驚嚇, 所以也飛走了, 樹上剩下了這隻被打死的鳥!\n");
break;
}
case 2:
{
printf("打死其中一隻鳥之後, 這隻被打死的鳥還掛在樹上, 其他四隻鳥中有一隻是死者的伴侶, 它一直守護在死者的身邊, 而另外三隻鳥飛走了, 因此樹上剩下了兩隻鳥!\n");
break;
}
case 3:
{
printf("打死其中一隻鳥之後, 這隻被打死的鳥還掛在樹上, 其他四隻鳥中有兩隻是死者的父母, 它們一直守護在死者的身邊, 而另外兩隻鳥飛走了, 因此樹上剩下了三隻鳥!\n");
break;
}
case 4:
{
printf("打死其中一隻鳥之後, 這隻被打死的鳥掉到了地上, 其他四隻鳥一時之間不知道發生了什麼事, 都留在原地不動, 因此樹上剩下了四隻鳥!\n");
break;
}
case 5:
{
printf("打死其中一隻鳥之後, 這隻被打死的鳥還掛在樹上, 其他四隻鳥分別是死者的父母和兩個子女, 它們一直守護在死者的身邊, 因此樹上剩下了五隻鳥!\n");
break;
}
default: // 輸入6或更大的數
{
printf("被打死的鳥屬於一個稀有的品種, 獵人因此受到了懲罰, 大家也開始保護環境, 這使得樹上的鳥兒越來越多了!\n");
break;
}
}
return 0;
}
以上隻是我給出的一組解答,相信大家也會給出自己心目中的答案。總的說來,從不同的角度來看待這個問題,就會給出不同的答案,這也正如一句詩所雲:“橫看成嶺側成峰,遠近高低各不同”。
最後更新:2017-10-22 10:33:20