用For循环语句判断真假

在C语言中,我们可以根据已知信息用For循环语句让程序给出判断。比如以下两个例子。

例题1:

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

具体代码如下:

#include<stdio.h>

int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	int d = 0;
	int e = 0;
		for (a = 1; a <= 5; a++)//使用五个for循环并嵌套起来,将每一个选手的名次都罗列出来。
		{
			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) &&//根据五个运动员的描述写出if判断语句:
								((b==2) + (e==4) == 1) &&//B选手说:我第二,E第四;
								((c==1) + (d==2) == 1) &&//C选手说:我第一,D第二;
								((c==5) + (d==3) == 1) &&//D选手说:C最后,我第三;
								((e==4) + (a==1) == 1))//E选手说:我第四,A第一;
							{
								if(a*b*c*d*e == 120)//由于每位运动员都说对了一半,加入所有可能的条件
									printf("a=%d b=%d c=%d d=%d e=%d\n", a, b, c, d, e);
							}
						}
					}
				}
			}
		}
		return 0;
	} 

例题2:

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯
的一个。以下为4个嫌疑犯的供词。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写一个程序来确定到底谁是凶手。

具体代码如下:

#include<stdio.h>

int main()
{
	char killer = 0;
	for (killer = 'a'; killer <= 'd'; killer++)//利用for循环分别把a/b/c/d四个人的assci码值赋给killer,从a开始依次判断,将a/b/c/d四个人都作为凶手进行判断
	{
		if ((killer!='a') + (killer=='c') + (killer=='d') + (killer!='d') == 3)//已知3个人说了真话,将a/b/c/d四个人说的话用代码描述出来
		{
			printf("%c\n", killer);
		}
	}
	return 0;
}

例题1中,每个人给2个条件,其中只有一个条件为真,说明一定会用到if判断语句的嵌套,判断5个人的名次,肯定要用的循环语句,所以是for循环里嵌套if判断语句的嵌套。多个 for 循环的嵌套”,则其执行过程也是嵌套的。

Supongo que te gusta

Origin blog.csdn.net/m0_72000264/article/details/128592026
Recomendado
Clasificación