在不同代码行运行类似条件导致结果不同

已知a>b>c,且a+b+c<100,求满足条件 1/(a^2)+1/(b^2)=1/(c^2)的  共有多少组。 

#include<iostream>
using namespace std;
int main()
{
	int a,b,c,s=0;
	for(a=3;a<100;a++)
	{
		for(b=2;a+b<100&&b<a;b++)
		{
			for(c=1;a+b+c<100&&b>c;c++)
			{
				if(c*c*b*b+c*c*a*a==a*a*b*b)
				{
					s++;
				}
			}
		}
	}
	cout<<s<<endl;
	return 0;
}

输出结果:2

#include<iostream>
using namespace std;
int main()
{
	int a,b,c,s=0;
	for(a=3;a<100;a++)
	{
		for(b=2;a+b<100;b++)
		{
			for(c=1;a+b+c<100;c++)
			{
				if(a>b>c&&c*c*b*b+c*c*a*a==a*a*b*b)
				{
					s++;
				}
			}
		}
	}
	cout<<s<<endl;
	return 0;
}

输出结果:0

 

不明白为什么都可以的语句输出结果不同。

求求大佬了!!!

第二个程序:if判断条件写错了,题目是要求a>b>c没错,但是c中不能连续判断。你的if条件应该是b>c && a>b &&c*c*b*b+c*c*a*a==a*a*b*b

按你那样写,左边的a>b>c的结果永远是0。程序首先判断a>b,结果为1,再判断1>c,结果为0。第二个程序的左边永远为0,所以s++不起到效果

谢谢大佬,一时不小心忽略了判断语句的写法了w(゚Д゚)w

非常感谢博主的创作,这篇博客对于我来说是非常有帮助的。我很佩服博主的才华和对技术的热爱。希望博主能够继续分享更多的知识和技巧,让更多的人受益。谢谢您的辛勤付出!