遇到了一个麻烦,各位大虾请帮我看看,谢谢!!

蜗牛带你去散步 2003-11-20 09:46:12
小弟在做一个题目的时候遇到了一些麻烦。
题目是用死算的方法,用三重嵌套的for循环求出所有满足边长不大于500的直角三角形,边长都为整数。我的程序是这样的:
#include<stdio.h>

main()
{
int i,j,k;
for (i=1;i<=498;i++)
{
for (j=1;j<498-i;j++)
{
for (k=1;k<498-i-j;k++)
{
if (i+j>k && i+k>j && j+k>i)
{
if ((i*i)==(j*j+k*k))
printf("i=%3d j=%3d k=%3d\n",i,j,k);
else if ((j*j)==(i*i+k*k))
printf("j=%3d i=%3d k=%3d\n",j,i,k);
else if ((k*k)==(i*i+j*j))
printf("k=%3d i=%3d j=%3d\n",k,i,j);
}
}
}
}
return 0;
}
问题是它求出来的结果有些根本就不对,它们是三角形但不是直角三角形。我当初以为可能是由于i,j,k的类型不对(int型),计算出来的平方溢出了,就换成long的了,但是出现了一个怪问题,所有求出的答案都变成有一个数值是0,其他的两个数相加是500。我的操作系统是WIN2000 PROFESSIONAL,编译器TURBO C 2.0,请哪位给予指导,谢谢了!
...全文
70 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sea373 2003-11-21
  • 打赏
  • 举报
回复
caocao81 2003-11-21
  • 打赏
  • 举报
回复
up
zhouqingyuan 2003-11-20
  • 打赏
  • 举报
回复

我上面写的是每个边不大于500的直角三角形,想到楼主可能想要的是边厂之和不大于500,
所以下面的就是求边长之和不大于500的直角三角形。
#include<stdio.h>

int main()
{
int i,j,k;
for (i=5;i<250;i++)//设i为斜边,j>=k
for (j=1;j<i;j++)
for (k=1;k<=j;k++)

if (k+j+i<=500&&k+j>i&&(i*i==(j*j+k*k)))

printf("i=%3d j=%3d k=%3d\n",i,j,k);


return 0;
}
zhouqingyuan 2003-11-20
  • 打赏
  • 举报
回复
没有必要这么复杂的,这样就可以了,不过由于结果太多,
一个屏幕都显示不完的。
zhouqingyuan 2003-11-20
  • 打赏
  • 举报
回复
#include<stdio.h>

int main()
{
int i,j,k;
for (i=5;i<=499;i++)//设i为斜边,j>=k
for (j=1;j<i;j++)
for (k=1;k<=j;k++)

if (k+j>i&&(i*i==(j*j+k*k)))

printf("i=%3d j=%3d k=%3d\n",i,j,k);


return 0;
}

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧