lzth.net
当前位置:首页 >> 百钱买百鸡算法流程图 >>

百钱买百鸡算法流程图

百钱买百鸡问题一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少). 这是一个古典数学问题,设一百只鸡中公鸡、母鸡、小鸡分别为x,y,z,问题化为三元一次方程组: 这

#include <stdio.h> void main() { int mj,gj,xj,n=0; printf(" 百元买百鸡问题求解方案\n") ; printf(" ----------------------\n") ; printf("\t母鸡\t公鸡\t小鸡\n") ; for(mj=0;mj<=100;mj++) for(gj=0;gj<=100;gj++) { xj=100-mj-gj; if(xj*0.5+mj*3+gj*2==100)

代码:#include <iostream> using namespace std; int main() { int gj; int mj; int xj; int s=100; int my; for(int gj=0;gj<=100/5;gj++) { 复for(int mj=0;mj<=100/3;mj++) { xj=(s-5*gj-3*mj)*3; my=gj+mj+xj; // xj=s-gj-mj; // my=5*gj+3*mj+xj/3; //本来准备判定是

理论上讲行得得通,其实就行得通,只不过你的程序有问题而已,循环的嵌套,内层初始值应在内层,一般不是定义在所有层的! 有一个问题你注意了没有?编程序不能一味地让计算机运算,如果所得的财数大于100时没有必要再计算了,所以

1楼的方法不对,因为没有保证是百钱,而只是保证百鸡.下面是正确的方法:#include #include int main() { for (int i = 0; i { int j_end = (100 - i*3)/5; for (int j = 0; j { int k = (100 - i*3 - j*5)*3; if (i + j + k == 100) { printf("%d %d %d\n", i, j , k); } } } return 0; } 程序运行结果:(有4个解)4 12 8411 8 8118 4 7825 0 75

#include<stdio.h> int main(void) { int x,y,z; printf("百钱买百鸡\n"); for(x = 0;x <= 20;x ++) { for(y = 0;y <= 33;y ++) { z = 100 - x - y; if(300 == 15 * x + 9 * y + z ) printf("公鸡:%2d,母鸡:%2d,小鸡:%2d\n",x,y,z); } } return 0; }

#include<stdio.h>int main(){int a,b,c;//各种鸡的数目 int i=0; //方程解数目 printf("百钱买百鸡,求鸡翁,鸡母,鸡雏的数目:\n");for(a=0;a<20;a++) //外层循环控制公鸡{for(b=0;b<=33;b++) //内层循环控制公鸡{ c=100-a-b; //小鸡的只数if(c%3==0 && a*5+b*3+c/3==100) {//验证取c值的合理性及得到一组解的合理性printf("%2d:鸡翁数:%2d,鸡母数:%2d,鸡雏数:%2d\n",++i,a,b,c); }}}}

二重循环,外面公鸡递增,里面母鸡递增,测试是否百钱并输出

#include<stdio.h> void main() { int a =5, b=2 ,c; //a是公鸡5元每只,b是母鸡2元每只,c用来控制小鸡0.5元每只 for(a=1 ; a<100/5; a++) for(b=1 ; b <(100-a*5) / 2 ; b++) { c =100 -a - b; if(a*5 + b *2 + c *0.5 ==100) { printf("公鸡:%d只,母鸡%d只,小鸡%d只",a,b,c); } } }

网站首页 | 网站地图
All rights reserved Powered by www.lzth.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com