百鸡值百钱问题--C语言循环嵌套解法

经典问题

  一只公鸡价值五钱,一只母鸡价值三钱,三只小鸡价值一钱,问:用100钱可以买公鸡,母鸡,小鸡各几只?

问题分析

  设可以买公鸡i只,母鸡j只,小鸡k只

根据题意可以得出有三个变量,且三个变量之间的关系是

5*i+3*j+k/3==100

i+j+k==100

由于C语言的条件,当k为整数时,k/3所得值也为整数,例如当k=5时,需要花费至多1.7元,但是计算机算出只需要1元,出现了错误,在结合实际要求,k必须为可以被三整除的整数。

隐藏条件

k%3==0;

进一步根据题意确定变量的范围:

i∈[0,20];

j∈[0,33]

k∈[0,100];

确定范围之后,三个变量三个范围,三层嵌套循环,为了进行优化,可以减少循环次数,

k=100-i-k;

根据分析写出如下代码,解决问题:

#include<stdio.h>
#include<stdlib.h>
int main()
{
int i=0,j=0,k=0;   //定义公鸡数量i,母鸡数量j,小鸡数量k
 for(i=0;i<=20;i++)
 {
  for(j=0;j<=33;j++)
  {
   k=100-i-j;
   if(5*i+3*j+k/3==100&&i+j+k==100&&k%3==0)
   {
    printf("公鸡%d只,母鸡%d只,小鸡%d只\n",i,j,k);
   }
  }
 }
return 0;
}

总结

①根据题意设出变量

②写出变量之间的限制条件和范围

③优化,想办法减少循环次数和嵌套循环的个数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值