有大佬吗,给个答案,感谢

题目内容:

一只公鸡值5钱,

一只母鸡值3钱,

三只小鸡值1钱,

现在用百钱买百鸡,

请问公鸡、母鸡、小鸡各多少只?

列举输出所有可能,要求公鸡数目小到大排列,公鸡相同则按照母鸡递增顺序,公鸡母鸡都相同,则按照小鸡递增顺序

输出结果:

a,b,c

d,e,f

.....

(a,d...对应公鸡数量,b,e...对应母鸡数量,c,f...对应小鸡数量)

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int g=-1, m=-1, x=-1;
    int c=-1;
    /*要求公鸡数目小到大排列,公鸡相同则按照母鸡递增顺序,公鸡母鸡都相同,则按照小鸡递增顺序*/
    /*按照题目意图应先满足范围最小的条件,且需要买100只鸡*/
    for (g = 0; g <= 20; g = g + 1)
    {
        for(m=0;m<=33;m=m+1)
        {     
        do 
        {
            x += 1;
        } while ((5 * g + 3 * m + x != 100 || g + m + x != 100) && x <= 100);
         printf("%d,%d,%d\n", g, m, x);
        }        
    }
    system("pause");
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
struct s{
    int g,m,x;

}s1[50];
bool cmp(s p1,s p2){
    if(p1.g!=p2.g){
        return p1.g<p2.g;
    }
    else{
        if(p1.m!=p2.m)
            return p1.m>p2.m;
        else
            return p1.x>p2.x;
    }
}
int main()
{
    int i,j,k,t=0;
    for(i=0;i<=100;i++)
        for(j=0;j<=100;j++)
            for(k=0;k<=100;k++)
            {
                if(5*i+3*j+k/3==100&&k%3==0&&i+j+k==100)
                {
                    s1[t].g=i;
                    s1[t].m=j;
                    s1[t].x=k;
                    t++;

                }
            }
    sort(s1,s1+t-1,cmp);
    for(i=0;i<t;i++){
        cout<<s1[i].g<<" "<<s1[i].m<<" "<<s1[i].x<<endl;
    }
}



其实只要三个for循环就行

#include <stdio.h>
main()
{
    int i, j, k;
    for(i=0;i<=100;i++)
        for(j=0;j<=100;j++)
            for(k=0;k<=100;k++)
            {
                if(5*i+3*j+k/3==100&&k%3==0&&i+j+k==100)
                {
                    printf("公鸡=%4d只,母鸡=%2d只,小鸡=%2d只\n",i,j,k);
                }
            }}

 

代码如下,如有帮助,请采纳一下,谢谢。

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int g=-1, m=-1, x=-1;
	int c=-1;
	/*要求公鸡数目小到大排列,公鸡相同则按照母鸡递增顺序,公鸡母鸡都相同,则按照小鸡递增顺序*/
	/*按照题目意图应先满足范围最小的条件,且需要买100只鸡*/
	for (g = 0; g <= 20; g = g + 1)
	{
		for(m=0;m<=33;m=m+1)
		{     
			x = (100 - 5*g - 3*m)*3;
			if(x>= 0)
				printf("%d,%d,%d\n", g, m, x);
		}        
	}
	system("pause");
	return 0;
}

 

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int a=-1,b=-1,c=-1; //公鸡、母鸡、小鸡
    int g=-1,m=-1;
    /*要求公鸡数目小到大排列,公鸡相同则按照母鸡递增顺序,公鸡母鸡都相同,则按照小鸡递增顺序*/
    /*按照题目意图应先满足范围最小的条件,且需要买100只鸡*/
    for (a = 0; a <= 20; a = a + 1)
    {
        g = 100 - (a * 5);     /*买完公鸡剩多少钱,这里a代表公鸡数量*/
        m = (g - g % 3) / 3; /*最多可以买多少母鸡,这里m代表母鸡数量*/
        for(b = 0;b <= m;b = b + 1)
        {
            c = (g - b * 3) / 1 * 3; /*最多可以买多少只小鸡*/
            if(a+b+c == 100)
            {
                printf("%d,%d,%d\n", a, b, c);
            }
        }     
    }
    return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m