有趣的代码——有故事背景的程序设计2

有趣的代码是很多的,所以接着上一篇,这一篇再和大家分享一些有故事背景的程序设计。

目录

1.百元买百鸡问题

2.哥德巴赫猜想

3.折半查找

4.主对角线元素之和

5.戈尼斯堡七桥问题


1.百元买百鸡问题

已知公鸡5元一只,母鸡3元一只,小鸡一元三只,花一百元钱买100只鸡,请问公鸡、母鸡、小鸡各有多少只?

很明显这是一个小学的数学应用题(其实,我也忘了三元一次方程是啥时候学的了😳),我们只需要列出两个三元一次方程,就可以简单解出来,那么怎么编写程序解决这个问题呢?其实,我们还是用方程式,但是是通过遍历找出满足方程式的值。

算法实现如下:

设变量x表示公鸡的个数,y表示母鸡的个数,z表示小鸡的个数,count表示解的个数。

1.初始化解的个数count=0;

2.循环变量x从0~20循环执行下属操作(关于为什么最大值是20,大家利用数学知识就很容易明白,而且这样就助于减少没必要的运算量)

2.1循环变量y从0~33循环执行下述操作:

2.1.1 z = 100 - x - y;

2.1.2 若5 * x + 3 * y + z / 3等于100,则count++;输出x,y,z的值;

2.1.3 y++;

2.2 x++;

3.如果count等于0,则输出无解信息。

 代码实现如下:

#include<stdio.h>
int main()
{
	int x , y , z ;
	int count = 0 ;
	for(x = 0 ; x <= 20 ; x++)
	{
		for(y = 0 ; y<= 33 ; y++)
		{
			z = 100 -x -y;
			if((z % 3 == 0) && (5 * x + 3 * y + z / 3) ==100)
			{
				count++;
				printf("第%d种情况为:公鸡有%d只,母鸡有%d只,小鸡有%d只\n", count , x , y , z );
			}
		}
	}
	if(count == 0)
		printf("问题无解\n");
	return 0;
}
2.哥德巴赫猜想

哥德巴赫猜想:在任意大于2的偶数可以分解为两个素数之和,哥德巴赫猜想是世界著名的数学难题,请验证哥德巴赫猜想。

根据哥德巴赫猜想,我们可以知道只要判断大于2的偶数可以等于两个素数之和即可,那么我们最好建立一个判断是否是素数的函数。

算法实现如下:
设变量n表示偶数,将n分解为n1和n2

1.n1从2~n/2循环执行下述操作

1.1如果n1不是素数,则n1++,重复步骤1.1试下一组数;

1.2n2 =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值