回 帖 发 新 帖 刷新版面

主题:一道数学题··

一个炊事员上街采购,用500元钱买90只鸡,其中母鸡一只15元,公鸡一只10元,小

鸡一只5元,正好把钱用完。问母鸡、公鸡、小鸡各买了多少只?

朋友,懂不?我也自己调试了一个程序,但感觉有点复杂,所以来请教请教···

回复列表 (共12个回复)

沙发

程序如下:
program checkens;
var
begin
  for i:=1 to 500 do
    for j:=1 to 500 do
      for k:=1 to 500 do
         if (i*15+j*10+k*5=500) then writeln(i,' ',j,' ',k,' ')
end.
典型的搜索题,一般的题目都包含有搜索,起码占了80%,所以搜索一定要学好!!!

板凳

怎么你调试的好像不对啊,输出的答案是错误的!!!!!!!!

3 楼

应该在(i*15+j*10+k*5=500)后加and(i+j+k)=90才行

4 楼

楼上的,不是加 and(i+j+k)=90
        而是加 and(i+j+k=90)
注意括号!

5 楼

不用三重循环吧!只需两重循环,循环公鸡、母鸡只数,然后算出小鸡只数,如果小鸡只数是整数就输出就行了

6 楼

哇!太支持楼上了!

7 楼

应该到 90 就够了吧????
program checkens;
var
begin
  for i:=1 to 90 do
    for j:=1 to 90 do
      begin
         k:=90-i-j;
         if (i*15+j*10+k*5=500) then writeln(i,' ',j,' ',k,' ')
      end;
end.
而且还可以进一步简便: i到33,j到9就行了~~~

8 楼

。。。。。。。。。小学5年级就做过了

9 楼

var a,b,c:integer;
begin
  for a:=0 to 500 div 15 do
     for b:=0 to 50 do
       for c:=0 to 90 do begin
         if(a+b+c=90)and(15*a+10*b+5*c=500)then begin
         writeln(a,' ',b,' ',c,' ')
         end;
    end;
end.

10 楼

最简单的是一重循环就够了。

我来回复

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