C语言,输入正整数c,求从c开始的前4个勾股数,若数c的平方正好与另两个数a、b的平方和相等,则称

C语言,输入正整数c,求从c开始的前4个勾股数,若数c的平方正好与另两个数a、b的平方和相等,则称c为一个勾股数。

#include <stdio.h>
int main(void) {
int c,a,b,cnt=0;scanf("%d",&c);
for(c-1;c>0;c--) for(a=0;a<c;a++) for(b=0;b<a;b++)
if(a*a+b*b==c*c){
printf("勾股数%d的平方=%d与%d的平方和\n",c,a,b);cnt++;
if(cnt==4) return 0;
}
}

追问

追答

你运行的是我的代码嘛~

追问

不是,我要的是上图的结果

追答#include <stdio.h>
int main(void) {
    int c,a,b,cnt1=1,cnt2=0;scanf("%d",&c);
    for(c;;c++) for(a=0;a<c;a++) for(b=0;b<a;b++)
    if(a*a+b*b==c*c){
        printf("No%d:%d\n",cnt1++,c);cnt2++;
        if(cnt2==4) return 0;
    }
}

我的input是10~你再输一下2试试看

追问

第一个for语句括号里的起始值,循环条件缺了

追答

恩,第二个就是不用的~因为要求往后输出4个勾股数,但不知道要往后数多少个数,所以没有循环限制的。你还是运行下试试看吧~我不是附了运行截图嘛

追问

我改了一下

谢谢你的帮助

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-13
#include<stdio.h>
void main()
{
int a,b,c,d[5],sum=0,i;
scanf("%d",&c);
for(;;c++)
{
for(a=1;a<=c;a++)
for(b=1;b<=c;b++)
{
if(a*a+b*b==c*c)
d[sum]=c;
sum+=1;
if(sum==4)
break;
}
}
for(i=0;i<=3;i++)
printf("%d\n",d[i]);
}
相似回答