weixin_51744807
梁朝伟本伟
采纳率100%
2021-02-24 19:33

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

已采纳

已知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

 

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

求求大佬了!!!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • qq_43414873 小白小白你好菜 2月前

    第二个程序: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++不起到效果

    点赞 1 评论 复制链接分享
  • weixin_51744807 梁朝伟本伟 2月前

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

    点赞 评论 复制链接分享