1. 程式人生 > >C語言_有趣的邏輯推理問題

C語言_有趣的邏輯推理問題

一、比賽名次

1.題目 5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果 A選手說:B第二,我第三; B選手說:我第二,E第四; C選手說:我第一,D第二; D選手說:C最後,我第三; E選手說:我第四,A第一; 比賽結束後,每位選手都說對了一半。

寫一個C語言程式確定比賽的名次。

2.程式碼如下:

#include <stdio.h>
#include <stdlib.h>

void guess()
{
	int a = 0, b = 0, c = 0, d = 0, e = 0;
	for (a = 1; a <= 5; a++)
	{
		for (b = 1; b <= 5; b++)
		{
			for (c = 1; c <= 5; c++)
			{
				for (d = 1; d <= 5; d++)
				{
					for (e = 1; e <= 5; e++)
					{
						if (((b == 2) + (a == 3) == 1)
							&& ((b == 2) + (e == 4) == 1)
							&& ((c == 1) + (d == 2) == 1) 
							&& ((e == 4) + (a == 1) == 1))
						{
							if (a*b*c*d*e == 120)
							{
								printf("比賽結果為:\n");
								printf("A 第 %d,  B 第 %d, C 第 %d,  D 第 %d,  E 第 %d\n",
									a, b, c, d, e);
							}
						}
					}
				}
			}
		}
	}
}

int main()
{
	guess();
	system("pause");
	return 0;
}

二、確定凶手

1.題目

日本某地發生了一件謀殺案,警察通過排查確定殺人凶手必為4個 嫌疑犯的一個。以下為4個嫌疑犯的供詞。 A說:不是我。 B說:是C。 C說:是D。 D說:C在胡說 已知3個人說了真話,1個人說的是假話。 現在根據這些資訊,寫一個C語言程式來確定到底誰是凶手。

2.程式碼如下:

#include <stdio.h>
#include <stdlib.h>

void killer()
{
	char killer = '0';
	for (killer = 'A'; killer <= 'D'; killer++)
	{
		if ((killer != 'A') + (killer == 'C') + (killer == 'D') + (killer != 'D') == 3)
		{
			printf("凶手是:%c\n", killer);
			break;
		}
	}
}

int main()
{
	killer();
	system("pause");
	return 0;
}