printf ("公鸡=d%只,母鸡=d%只,小鸡=d%只\n" ,i,j,k);
|
看到错吗?
#include "stdio.h"
main()
{
int i,j,k;/*这i代表公鸡,j代表母鸡,k代表小鸡个数,而z代表小鸡的数目*/
float z=1/3;
for (k=0;k<=99;k+=3)/* 因为k%3只能整除,不可能等于小数啦,如果余数,那么
其他有可能就成了半个鸡了,不可能吧,所以就
只能是K+3*/
{
for (i=0;i<=20;i++)/*一样,只能是一百元,所以只能小于等于20,下面的一样*/
{
for (j=0;j<=34;j++)
{
if (i+j+k==100&&i*5+j*3+k/3.0==100)
printf ("公鸡=%d只,母鸡=%d只,小鸡=%d只\n" ,i,j,k);
}
}
}
getch ();
}
看起来好象没有什么错误,但是运行出来就不行了,不知道哪位高人能帮小弟弟解决看一下,我写的程序哪里有问题呢???
我已经改正过来了!谢谢哈!现在这个程序应该是正确的了吧!!!!
应该改成if (i+j+k==100&&i*5+j*3+k/3.0==100)
先列出数学方程,再想办法优化:
设买公鸡数为x,母鸡数为y,小鸡数为z,
则有:x+y+z=100.........................................................1
5x+3y+1/3z=100 ................................................2
由1得:z=100-x-y
带入2并化简得:y = 25 - 7/4x ........................................3
由3可知:x必须是4的倍数,且x<=12; y<=25
综上述,其实我们只要一个循环即可,且循环的次数为4次,下面是我的代码:
#include <stdio.h>
void main()
{
int i;
int x; /*公鸡数目*/
int y; /*母鸡数目*/
int z; /*小鸡数目*/
for (i=0; i<4; ++i)
{
x = 4*i;
y = 25 - 7*x/4;
z = 100 - x - y;
printf("cock number is:%d \t hen number is:%d \t chick number is:%d\n",x,y,z);
}
getch();
}