课上循环典型例子所遇到的bug问题(2)

该博客介绍了如何使用穷举法解决经典的百钱买百鸡问题。程序员通过调整代码,修正了小鸡价格计算的错误,避免了不符合条件的解。在原始代码中,整数除法导致了结果不准确,解决方案是将除法操作改为浮点数除法,确保结果精确匹配。更新后的代码能够正确输出所有可能的公鸡、母鸡和小鸡的组合。

项目场景:

百钱买百鸡(穷举法)


问题描述

其中几条并不符合百钱买百鸡的要求

#include<stdio.h>
int main()
{
	int x,y,z;
	for(x=0;x<=20;x++)
	{
		for(y=0;y<=33;y++)
		{
			for(z=0;z<=100;z++)
			if(x+y+z==100&&5*x+3*y+z/3==100)
			printf("可以买公鸡%d,母鸡%d,小鸡%d\n",x,y,z);
		}
	}
	return 0;
 } 

 

原因分析:

在小鸡价格计算时,int型相除直接取整,既算入了不符合的情况,if的与条件判断中两个判断条件应加上括号

解决方案:

将除3变为除3.0,100也化为100.0,算取的结果更加精确

#include<stdio.h>
int main()
{
	int x,y,z;
	for(x=0;x<=20;x++)
	{
		for(y=0;y<=33;y++)
		{
			for(z=0;z<=100;z++)
			if((x+y+z==100)&&(5*x+3*y+z/3.0==100.0))
			printf("可以买公鸡%d,母鸡%d,小鸡%d\n",x,y,z);
		}
	}
	return 0;
 } 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值