黑马程序员技术交流社区

标题: 循环练习(c语言) [打印本页]

作者: 大龄产妇    时间: 2014-5-24 22:31
标题: 循环练习(c语言)
本帖最后由 大龄产妇 于 2014-5-26 11:41 编辑

从网上找了几道题去检验自己学习成果,发觉还是有些问题,看似简单。
但是自己上手做,还是没有思路。
题目是这样的:
一只公鸡五块钱,一只母鸡三块钱,三只小鸡一块钱,
要用一百块钱买一百只鸡,每种鸡各需要多少只?
求解题思路,越详细越好!
作者: 大龄产妇    时间: 2014-5-24 22:59
没人气儿啊,自己顶自己一下!
作者: wanzhu159    时间: 2014-5-24 23:11
顶你,我顶你
作者: ⒈心只霸占沵    时间: 2014-5-24 23:23
  1. /*
  2.   首先分析一下,公鸡五块   母鸡三块   三只小鸡一块

  3.   一百块钱买一百只鸡

  4.   公鸡数目+母鸡数目+小鸡数目=100只
  5.   5*公鸡数目+3*母鸡数目+小鸡数目*三分之一=100元

  6.   100元全买公鸡最多有20只
  7.   100元全买母鸡最多有33只
  8.   100元全买小鸡的话最多买300只 但是题目说了买一百只鸡,所以小鸡最多是100只
  9.   
  10.   这里用穷举法,就像1  2  3两两排列和等于4的有几种

  11.   1 1
  12.   1 2
  13.   1 3

  14.   2 1
  15.   2 2
  16.   2 3

  17.   3 1
  18.   3 2
  19.   3 3
  20.   for(int i=1;i<=3;i++){
  21.     for(int j=1;j<=3;j++){
  22.        if(i+j=4)
  23.         printf("%d和%d\n",i,j);
  24.     }
  25.   }
  26. */
  27.   //进入正题,我就用拼音了  gongji公鸡   muji母鸡   xiaoji小鸡  这里也是用穷举法
  28. for(int gongji=0;gongji<=20;gongji++)
  29. {
  30.     for(int muji=0;muji<=33;muji++)
  31.     {
  32.           for(int xiaoji=0;xiaoji<=100;xiaoji++)
  33.           {
  34.                if((5*gongji+3*muji+xiaoji/3==100)&&(gongji+muji+xiaoji)==100)
  35.                   printf("公鸡有%d只,母鸡有%d只,小鸡有%d只\n",gongji,muji,xiaoji);
  36.            }
  37.      }
  38. }
复制代码

作者: huangqiwa    时间: 2014-5-24 23:41
楼主可以参考下循环的方式来解这到题目
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int main()
  4. {
  5.         int a5=0; //5元的鸡 公鸡
  6.         int b3=0; //3元的鸡 母鸡
  7.         int c1_3; //1/3元的鸡 小鸡

  8.         for(a5;a5<20;a5++) //第一层循环取 公鸡的个数 每遍历一次 公鸡的个数+1 公鸡5元 因此最多只能100/5 个公鸡
  9.         {
  10.                 for(b3;b3<(100-(a5*5))/3;b3++) //第二层循环取 母鸡的个数 每遍历一次 母鸡的个数+1 母鸡3元 因此最多只能(100-(a5*5))/3 个公鸡
  11.                 {
  12.                         c1_3=(100-5*a5-3*b3)*3;//小鸡的个数
  13.                         if(a5+b3+c1_3==100)
  14.                         {
  15.                                 printf("公鸡:%d 母鸡:%d 小鸡: %d",a5,b3,c1_3);
  16.                         }
  17.                 }
  18.                
  19.         }
  20.         system("pause");
  21.         return 0;
  22. }
复制代码

作者: 从┧靇┟开始    时间: 2014-5-25 00:11
本帖最后由 从┧靇┟开始 于 2014-5-25 00:46 编辑
⒈心只霸占沵 发表于 2014-5-24 23:23

我也觉得你的思路是对的 我c语言不好给你补充下 不知道算不算解出来了(用了你的代码)
  1. #include <stdio.h>
  2. int main()
  3. {

  4.     int gongji,muji,xiaoji;
  5.     //进入正题,我就用拼音了  gongji公鸡   muji母鸡   xiaoji小鸡  这里也是用穷举法
  6.     for(int gongji=0;gongji<=20;gongji++)
  7.     {
  8.         for(int muji=0;muji<=33;muji++)
  9.         {
  10.             for(int xiaoji=0;xiaoji<=100;xiaoji++)
  11.             {
  12.                 if((5*gongji+3*muji+xiaoji/3==100)&&((gongji+muji+xiaoji)==100)&&(xiaoji%3==0)) //  第一个式子里地小鸡个数默认是3得整数倍
  13.                     printf("公鸡有%d只,母鸡有%d只,小鸡有%d只\n",gongji,muji,xiaoji);
  14.             }
  15.         }
  16.     }
  17.    
  18.     return 0;
  19. }
复制代码


作者: 大龄产妇    时间: 2014-5-26 11:38
wanzhu159 发表于 2014-5-24 23:11
顶你,我顶你

刚刚看到,非常感谢!:)
作者: 大龄产妇    时间: 2014-5-26 11:39
⒈心只霸占沵 发表于 2014-5-24 23:23

很详细,谢谢啦!{:2_36:}
作者: 大龄产妇    时间: 2014-5-26 11:41
huangqiwa 发表于 2014-5-24 23:41
楼主可以参考下循环的方式来解这到题目

第二个头文件干嘛用的?
作者: huangqiwa    时间: 2014-5-26 12:18
大龄产妇 发表于 2014-5-26 11:41
第二个头文件干嘛用的?

system("pause");
这句代码用的,我在vs下写的,用做 停留在屏幕上,不然运行后就关了!
作者: a1130003724    时间: 2014-5-26 12:46
给你顶起来  顶起




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2