遇到了一个麻烦,各位大虾请帮我看看,谢谢!!
小弟在做一个题目的时候遇到了一些麻烦。
题目是用死算的方法,用三重嵌套的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,请哪位给予指导,谢谢了!