回 帖 发 新 帖 刷新版面

主题:不太明白,望指点(菜鸟级的问题)

一个炊事员上街采购,用500元钱买了90只鸡, 其中母鸡一只15元,公鸡一只10元,小鸡一只5元,正好把钱买完。问母鸡、公鸡、小鸡各买多少只?
  分析:设母鸡I只,公鸡J只,则小鸡为90-I-J只,则15*I+ 10* J+(90-I-J)*5=500,显然一个方程求两个未知数是不能直接求解。必须组合出所有可能的i,j值,看是否满足条件。这里I的值可以是0到33,J的值可以0到50。
  源程序如下:
  programr ex4_6;
  var i,j,k:integer;
  begin
   for i:=1 to 5 do
   for j:=1 to 8 do
    begin
     k:=90-i-j;
     if 15*i+10*j+5*k=500 then writeln(i:5,j:5,k:5);
    end;
  end.
   分析中I的值可以是0到33,J的值可以0到50,可程序中为何只到5和8.我将程序修改后调试了一下(即将5换成了33,8换成了50)结果没变,望大侠指点一二

回复列表 (共2个回复)

沙发

var
  i,j,k:integer;
begin
  for i:=0 to 33 do
  for j:=0 to 10 do 
begin  k:=90-i-j; if 15*i+10*j+5*k=500 then writeln(i:5,j:5,k:5);   end;
end.
你f9并save一下再看看(要修改过的)

板凳


我认为应该直到5和10啊!!!!!!!!!!!你数学推导有没有事先推过???????根据你的算法,
           15I+10J+5(90-I-J)=500
              10i+5j+450=500
               10i+5j=50
说明如果I和J和K都要有非负值,则I最大只能取5,J最大只能取10,否则不是超过或不到钱数就是鸡数不对,你的程序的问题出在你的FOR循环的初始值不应该是1,而是0,题目并没有说所有鸡的品种都要买,这样应该就对了.你再去理解一下,不懂我再说(也许有错,请见谅).
  [em9]

我来回复

您尚未登录,请登录后再回复。点此登录或注册