国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

藍橋杯——趣味邏輯推理二(2017.2.17)

2019-11-08 03:11:08
字體:
來源:轉載
供稿:網友

一、誰做了好事?

        某校有4位同學中的一位做了好事不留名。表揚信來了之后,校長問這4位是誰做的好事。

        A說:不是我;

        B說:是C;

        C說:是D;

        D說:他胡說。

        已知3個人說的是真話,1個人說的是假話。請根據這些信息,編程找出做了好事的人。

【分析】可設置一個循環,循環4次,將4個同學的話表示成邏輯表達式,進行判斷。

源代碼:

#include <stdio.h>int main(){	int i;	int a,b,c,d;	for(i=1;i<=4;i++)	{		a=(i!=1);		b=(i==3);		c=(i==4);		d=(i!=4);		if(a+b+c+d==3)			

程序截圖:

二、黑與白

        有A,B,C,D,E,五人,每人額頭上都帖著一張或黑或白的紙。五人對坐,每人都能看見別人的,但看不見自己的。而且黑的撒謊,白的誠實。        A說:“我看見有三個人的是白紙,一人是黑紙”。        B說:“我看見四個人的都是黑紙”。        C說:“我看見有一個人的是白紙,三個人是黑紙”。        D說:“我看見四個人的都是白紙”。        E什么也沒有說。

       問這5個人誰的額頭上貼的是白紙,誰的額頭上貼的是黑紙?

【分析】看ABCD四人說的話,分別分析為真話和假話時的情況。

源代碼:

#include <stdio.h>int main(){	int A,B,C,D,E;               //貼紙顏色:1-白色  0-黑色 	for(A=0;A<=1;A++)	{		for(B=0;B<=1;B++)		{			for(C=0;C<=1;C++)			{				for(D=0;D<=1;D++)				{					for(E=0;E<=1;E++)					{						if((A&&B+C+D+E==3||!A&&B+C+D+E!=3) && (B&&A+C+D+E==0||!B&&A+C+D+E!=0) && 
(C&&A+B+D+E==1||!C&&A+B+D+E!=1) && (D&&A+B+C+E==4||!D&&A+B+C+E!=4))							printf("A:%d B:%d C:%d D:%d E:%d/n",A,B,C,D,E); 					}				}			}		}				 	}	return 0;}

程序截圖:

三、誰家孩子跑的最慢?

        張王李三家各有三個小孩。

        一天,三家的九個孩子在一起比賽短跑,規定不分年齡大小,跑第一得9分,跑第二得8分,依此類推。

        比賽結果是各家的總分相同,且這些孩子沒有同時到達終點的,也沒有一家的兩個或三個孩子獲得相連的名次。

        已知獲第一名的是李家的孩子,獲得第二的是王家的孩子。問獲得最后一名的是誰家的孩子?

【分析】此題可抽象為一個“數組填數”模型,其中的已知條件:

        (1)該場比賽總分為1+2+3+4+5+6+7+8+9=45分

        (2)三家孩子總分相同,故每家孩子得分為15

        (3)由于獲得第一名的是李家的孩子,獲得第二名的是王家的孩子,因此可推知獲得第三名的一定是張家的孩子,否則其他兩家孩子的總分會超過15

        (4)由于這9個孩子的名次不存在并列的情況,且同一家的孩子不會獲得相連名次,因此結合(3)可推知獲得第4名的一定不是張家的孩子

        (5)如果將得分分為三檔:高分(7~9)、中等分(4~6)、低分(1~3),可推出每家3個孩子的得分一個為高分、一個為中等分、一個為低分。

        因此可用一個二維數組a[3][3]保存三家9個孩子的得分,且每家得分按高分(7~9)、中等分(4~6)、低分(1~3)的順序保存。

源代碼:

#include <stdio.h>int main(){	int i,j,score[3][3];	int zhang,wang,li;                //zhang wang li用來保存三家得4/5/6分孩子	for(i=0;i<3;i++)                  //score[0]~score[2]分別存放張王李家三個孩子的分數 		score[i][0]=7+i;	for(zhang=4;zhang<6;zhang++)      //張家孩子在4~6分段可能取值的分數為4或5,不能取6 	{		for(wang=4;wang<7;wang++)		{			for(li=4;li<7 && zhang!=wang;li++)			{				if(li!=zhang && li!=wang)				{					if(15-zhang-score[0][0]!=15-wang-score[1][0] && 15-zhang-score[0][0]!=15-li-score[2][0] 					&& 15-wang-score[1][0]!=15-li-score[2][0])      //9個孩子名次不存在并列的情況 					{						score[0][1]=zhang;						score[0][2]=15-zhang-7;						score[1][1]=wang;						score[1][2]=15-wang-8;						score[2][1]=li;						score[2][2]=15-li-9;					} 				}			}		} 	}	for(i=0;i<3;i++)                  //輸出三家孩子的成績 	{		for(j=0;j<3;j++)			printf("%d ",score[i][j]);		printf("/n");	}	return 0;}程序截圖:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 边坝县| 新蔡县| 柯坪县| 云霄县| 永昌县| 屏东县| 噶尔县| 阿图什市| 平定县| 柘荣县| 天水市| 湖北省| 揭西县| 德化县| 安义县| 广德县| 泰和县| 云安县| 涿鹿县| 威信县| 建始县| 会同县| 阜平县| 太康县| 丹棱县| 涞源县| 抚松县| 厦门市| 英山县| 蒙自县| 峨眉山市| 城固县| 南华县| 临西县| 龙胜| 裕民县| 凤凰县| 雷波县| 东城区| 沂水县| 甘南县|