预测比赛结果、找出凶手、杨辉三角

哈喽哈喽大家好,今天和大家分享的是,用C语言完成逻辑判断的问题和打印杨辉三角.

目录

一、5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果

二、写一个程序来确定到底谁是凶手

三、杨辉三角形


一、5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果

A选手说:B第二,我第三;

B选手说:我第二,E第四;

C选手说:我第一,D第二;

D选手说:C最后,我第三;

E选手说:我第四,A第一;

比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

看到这个问题的时候大家是不是懵懵的,啊这...

不要慌不要慌,我们一起来解决吧!

我相信如果让大家自己动手算一算,肯定都能够得到ABCDE的名词,不就是如果...就...的过程吗

想到如果,大家就会想到编程语句if咯.

那A.B.C.D.E的值怎么办呢?

我们用到的是for循环,一共用了5层(看着很吓人,其实很简单),通过循环其实完成了一个排列组合的过程也就是说A.B.C.D.E均有五种可能,那一共就有5的五次幂种可能.

当然当然,我们最后要的只有一种,if语句闪亮登场.

要满足半句话是真的,我们可以想到如果判断是真假,真就是1,假就是0,那我们就可以做出如下代码的操作,一句话只有半句是真的,那就半句0半句1咯.把所有人的话并在一起,再加上这五个数字不可能相等,答案就出来了.

int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	int d = 0;
	int 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 && (c == 5) + (d == 3) == 1 && (e == 4) + (a == 1) == 1 && a!=b&&a!=c&&a!=d&&a!=e&&b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e)
							printf("A=%d B=%d C=%d D=%d E=%d\n", a, b, c, d, e);
					}
				}
			}
		}
	}
	
	return 0;
}

正确的排名就是:

第一名:B

第二名:D

第三名:A

第四名:E

第五名:C

 二、写一个程序来确定到底谁是凶手

某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。

以下为4个嫌疑犯的供词:

A说:不是我。

B说:是C。

C说:是D。

D说:C在胡说

已知3个人说了真话,1个人说的是假话。

相信看完第一个问题的你,在看到这个问题的时候,脑子里一定闪过了四个字"小菜一碟".

int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	int d = 0;
	for (a = 0; a <= 1; a++)//等于1 表示是凶手
	{
		for (b = 0; b <= 1; b++)
		{
			for (c = 0; c <= 1; c++)
			{
				for (d = 0; d <= 1; d++)
				{
					if ((!a) + (c) + (d) + (!d) == 3&&a+b+c+d==1)
						printf("A=%d B=%d C=%d D=%d\n", a, b, c, d);
				}
			}
		}
	}

	return 0;
}

这里需要注意的是if的判断条件,四个人三个人说真话,所以第一个条件相加是3,而ABCD中只有一个凶手,所以ABCD三个数字相加等于1.

显然,凶手是C.

三、杨辉三角形

首先我们先来分析一下杨辉三角形的特征.

杨辉三角,是二项式系数在三角形中的一种几何排列,是中国数学史上的一个伟大成就.

它的精髓就在于,每个数字都等于该数字两肩数字之和,知道了这个特点,我们就可以来实现我们的程序.

为了实现杨辉三角形,我创建了一个100*100的二维数组.这也就注定了我的三角形最多只能输出100行,大家可以自行调整数组大小,改变行数.

有两种办法

首先,将数组初始化全部赋值为0

1.图中三角区的0不变,只需要把数字部分填充,然后打印的时候打印非0部分.

 

 2.第二种就是按照数组顺序填充,然后打印时在每行数字前方添加空格.

在这里我给出第二种方法的代码.第一种方法大家可以尝试,或者如果有更好的办法,成功了记得分享在评论区哦~

#include<stdio.h>
//在屏幕上打印杨辉三角。
int main()
{
	int n = 0;
	int i = 0;
	int j = 0;
	scanf("%d", &n);
	int arr[100][100] = { 0 };
	arr[0][0] = 1;
	arr[1][0] = 1;
	arr[1][1] = 1;
	for (i = 2; i < n; i++)
	{
		arr[i][0] = 1;
		for (j = 0; j <= i; j++)
		{
			if (j == i)
			{
				arr[i][j] = 1;
			}
			else
			{
				arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
			}

		}
	}
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n - i; j++)
		{
			printf(" ");
		}
		for (j = 0; j <=i; j++)
		{
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}
	return 0;

}

仔细观察杨辉三角会发现,它所有行的第一个数字和最后一个数字都为1,所以我们也给对应的arr[i][0]和arr[i][j](i==j).赋值为1.

然后利用杨辉三角的性质,将剩余数组元素赋值.

最后打印输出时为了保证三角形的形状,我们在打印数组前,打印相应数量的空格.

然后我们输入一个n(0<n<100)来检验一下啵.

 希望大家多多交流,一起进步!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园建设方案旨在通过融合先进技术,如物联网、大数据、人工智能等,实现校园的智能化管理与服务。政策的推动和技术的成熟为智慧校园的发展提供了基础。该方案强调了数据的重要性,提出通过数据的整合、开放和共享,构建产学研资用联动的服务体系,以促进校园的精细化治理。 智慧校园的核心建设任务包括数据标准体系和应用标准体系的建设,以及信息化安全与等级保护的实施。方案提出了一站式服务大厅和移动校园的概念,通过整合校内外资源,实现资源共享平台和产教融合就业平台的建设。此外,校园大脑的构建是实现智慧校园的关键,它涉及到数据中心化、数据资产化和数据业务化,以数据驱动业务自动化和智能化。 技术应用方面,方案提出了物联网平台、5G网络、人工智能平台等新技术的融合应用,以打造多场景融合的智慧校园大脑。这包括智慧教室、智慧实验室、智慧图书馆、智慧党建等多领域的智能化应用,旨在提升教学、科研、管理和服务的效率和质量。 在实施层面,智慧校园建设需要统筹规划和分步实施,确保项目的可行性和有效性。方案提出了主题梳理、场景梳理和数据梳理的方法,以及现有技术支持和项目分级的考虑,以指导智慧校园的建设。 最后,智慧校园建设的成功依赖于开放、协同和融合的组织建设。通过战略咨询、分步实施、生态建设和短板补充,可以构建符合学校特色的生态链,实现智慧校园的长远发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值