当前位置:首页 » 编程语言 » 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);
}