當前位置:首頁 » 編程語言 » c語言中求勾股定理的編程
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中求勾股定理的編程

發布時間: 2022-04-15 03:38:12

A. C++編程求滿足勾股定理的個數

做這個題用了我一小時的時間,一直在考慮循環次數與計算時間的問題,還好算是有結果了

#include<stdio.h>
#include<math.h>
intmain()
{
doubleaa,bb,cc,z;
inta,b,c,cnt=0;

scanf("%d",&c);
cc=c*1.0*c;//c的平方,用double精度才夠,int會溢出

for(a=1;a<c;a++)
{
aa=a*1.0*a;//a的平方
bb=cc-aa;//b方
b=(int)(sqrt(bb)+0.005);//開方得到b,加上個精度誤差進行取整
z=bb-b*1.0*b;//檢查b*b是不是等於bb.浮點數比較相等要用減法,因為精度問題

if(z<=0.005&&z>=-0.005)//在誤差范圍內,可視作兩數相等
{
c=b;//為了循環次數控制
cnt++;
}
}
printf("%d ",cnt);
return0;
}

B. c語言求勾股數

#include"stdafx.h"

intmain()
{
inti;
scanf("%d",&i);

for(inta=1;a<=i;a++)
{
for(intb=a;b<=i;b++)
{
for(intc=b;c<=i;c++)
{
if(a*a+b*b==c*c)
{
printf("%d%d%d ",a,b,c);
}
}
}
}
}

C. C 語言編寫的勾股定理代碼

根據兩直角邊求斜邊?
#include "iostream.h"
#include "math.h"
void main()
{
double a,b,c;
cout<<"輸入三角形兩直角邊長:";
cin>>a>>b;
c=sqrt(a*a+b*b);
cout<<"直角邊長為:"<<c<<endl;
}

D. c語言做勾股定理知道兩個直角邊怎麼編程

#include<stdio.h>
#include<math.h>
main()
{
floata,b,c;
printf("請輸入兩直角邊:");
scanf("%f%f",&a,&b);
c=sqrt(a*a+b*b);
printf("斜邊為:%f ",c);
}

E. C語言中求解勾股數最快的演算法程序

不得不說,樓上兩位的演算法有疏漏!
請看看:k倍的(3,4,5)是否「都能」表示成(m*m-n*n,2*m*n,m*m+n*n)的形式?

本人的程序如下:

#include <stdio.h>
#include <math.h>
#define MAX 20000
int gcd(int a,int b)
{
int t;
if(a>b) t=a,a=b,b=t;
while(a)
{
t=a;
a=b%a;
b=t;
}
return b;
}
int main()
{
int i,j,n,total=0;
n=(int)sqrt(MAX);
for (i=1;i<=n;++i)
{
for (j=1;j<i;++j)
{
if(((i+j)&1)&&gcd(i,j)==1)
total+=MAX/(i*i+j*j);
}
}
printf("Total: %d\n",total);
return 0;
}

F. C語言求勾股數,提示WA,求解

如圖所示,f這里清零一下就好了,上一個循環f=1之後沒有f=0的時候,就一直是1了,if里的判斷就算不成立,還會輸出i。望採納。。。。。。

G. 用C程序求100以內勾股數。

所謂勾股數,就是對於a,b,c,存在a*a+b*b=c*c。

為去除重復,可令a<b,並對100以內的a,b遍歷。如果存在滿足的等式關系的c,則輸出。


代碼如下:

intmain()
{
inta,b,c;
for(a=1;a<100;a++)
for(b=a;b<100;b++)
{
intd=a*a+b*b;
if(d>10000)break;
for(c=b+1;c<100;c++)
{
inte;
e=c*c;
if(e==d)
printf("%d,%d,%d ",a,b,c);
if(e>=d)break;
}
}
}

H. C語言程序求勾股數

#include"stdio.h"
int main(int argc, char* argv[])
{
int a,b,c,count=0;
for(a=1;a<=1000;a++)
for(b=1;b<=1000;b++)
for(c=a-b;c<a+b && c<1000;c++)
if(c*c==(a*a + b*b)){
count+=1;
printf("%d,%d,%d\n",a,b,c);
}
printf("共計有 %d 組\n",count);

system("pause");
return 0;
}

I. C++編程問題,勾股定理,高手進!

vc2008測試通過。
這種東西只能一個一個的來試。滿足條件就算一個。
要考慮三角形成立條件。
考慮到三個數不會有兩個相同,(否則第三個就不會是整數了)我們可以少算幾個。考慮到大量的乘法運算,我們盡量合並。
然後如果a^2+b^2<c^2則c之後的數肯定不滿足是另外兩個的平方和。
於是有下面的程序。

#include<stdio.h>
int main()
{
int a[20],i,j,k,count=0;//count計數總共幾個
for(i=1;i<=20;i++)
a[i-1]=i*i;//算出所有的20以內的數的平方,後面只算加就好了
for(i=0;i<20;i++)
for(j=i+1;j<20;j++){//後面一個輸得起點是前一個數加1
for(k=j+1;k<i+j;k++){//三角形成立條件
if(a[i]+a[j]==a[k]){//找到一個
count++;
printf("%d:%d %d %d\n",count,i+1,j+1,k+1);
break;
}
else if(a[i]+a[j]<a[k])//後面的肯定不是了
break;
}
}
printf("total:%d\n",count);
}

J. c語言編程計算10-80中所有滿足勾股定理的整數組和個數

#include<stdio.h>
main()
{
int i,j,k;
int count = 0;
for(i=10;i<=80;i++)
//for(j=1;j<1000;j++)
for(j=i;j<=80;j++)//從i開始可以去除重復。
for(k=j;k<=80;k++)
{
if(i*i+j*j==k*k)
{
printf("%d,%d,%d\r\n",i,j,k);
count++;
break;
}

}
printf("10-80滿足勾股定理的個數為:%d個\n",count);
}