是的,因为float的精度问题。
还有另外一个问题就是salary2 = 32/x;被作为整数除法,丢掉了小数部分。
建议
if(x*salary1==y*salary2)
改成
if(x*salary1-y*salary2<1e-6 && x*salary1-y*salary2>-1e-6 )
建议
salary2 = 32/x;
改成
salary2 = 32.0/x;
#include
void main()
{
int x,y;//我的鸡蛋个数和她的鸡蛋个数
float salary1,salary2;//我鸡蛋单价和她的鸡蛋单价
for(x=1;x<=150;x++)
{
y=150-x;
salary1 = 24.5/y;
salary2 = 32.0/x;
//if(x*salary1==y*salary2)
if(x*salary1-y*salary2<1e-6 && x*salary1-y*salary2>-1e-6 )
printf("我有%d个鸡蛋,她有%d个鸡蛋",x,y);
}
}
//修改如下
#include
main()
{
int x,y;//我的鸡蛋个数和她的鸡蛋个数
for(x=1;x<150;x++)
{
y=150-x;
if((float)x*24.5/y==(float)y*32/x)
printf("我有%d个鸡蛋,她有%d个鸡蛋",x,y);
}
}