大家看看我这个C语言代码错在哪里?

来源:百度知道 编辑:UC知道 时间:2024/06/13 23:31:28
#include<stdio.h>
#include<math.h>
void main()
{ int a=3,b=4,c,t;
for(t=25;t<100;a++,b++)
{ t=c*c;
t=a*a+b*b;
}
printf("%d,%d,%d",a,b,c);

}
我想用这个计算勾股数。

好像对你的算法有点了解,只是你代码错了,可以这样改,不知道是否合你意:
#include<stdio.h>
#include<math.h> //这个头文件好像没用吧
void main()
{ int a=3,b=4,c,t;
for(t=25;t<100;a++,b++)
{
t=a*a+b*b;
c=t;
printf("%d,%d,%d\n",a,b,c);
}
}
不过这里最后的一次循环t是大于100的,可以用多种方法使其小于100,比如稍加改进代码
#include<stdio.h>
void main()
{ int a=3,b=4,c,t;
for(t=25;;a++,b++)
{
t=a*a+b*b;
if(t>100) break;
c=t;
printf("%d,%d,%d\n",a,b,c);
}
}

#include "stdio.h"
#define N 1000 /*定义勾股数的最小边的范围*/
void main()
{
int i,j;
for(i=3;i<N;i++)/*i是勾股数的最小边*/
for(j=i-2;j>0;j-=2)
/*如果最小边的平方能分解成两个同奇偶的整数的乘积,
则存在一组勾股数*/
{
if(!(i*i%j) && !((i*i/j-i)%2) && (i*i/j-j)>(2*i))
printf("%d %d %d\n",i,(i*i/j-j)/2,