‘壹’ c语言 构成直角三角形的条件
修改如下(AC):
主要是加上判断能否构成三角形的部分,其次,题目要求使用int类型。
//---------------------------------------------------------------------------
#include
<stdio.h>
#include
<math.h>
int
main(void){
int
t,a,b,c;
scanf("%d",&t);
while(t--){
scanf("%d%d%d",&a,&b,&c);
if((a+b>c)&&abs(a-b)<c&&((a*a+b*b==c*c)||(c*c+b*b==a*a)||(a*a+c*c==b*b)))
printf("1\n");
else
printf("0\n");
}
return
0;
}
//---------------------------------------------------------------------------
‘贰’ C语言 输入三角形三条边(实数),如何判断是直角三角形
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
voidmain()
{
floata,b,c,temp;
printf("请输入三个数: ");
scanf("%f%f%f",&a,&b,&c);
printf("您输入的三个数是: ");
printf("%f %f %f ",a,b,c);
//判断哪个是最长的边
if(a<b)
{
temp=a;
a=b;
b=temp;
}
if(a<c)
{
temp=a;
a=c;
c=temp;
}
printf("现在的三个数: ");
printf("%f %f %f ",a,b,c);//现在a是最长边了
if((a+b>c)&&(a+c>b)&&(b+c>a)&&fabs(a*a-b*b-c*c)<1e-6)//浮点数不能直接判断等于不等于
printf("是直角三角形!! ");
else
printf("不是直角三角形!! ");
system("pause");
}
‘叁’ C语言判断直角三角形
浮点数判断相不相等 不能用“==” 是要用两个数相减,当小于一定的值就是相等的。
因为浮点数在计算机中不是精确表示的,,
判断比如: if (abs(x*x+y*y-z*z)<1e-x) (abs函数代表绝对值的意思, 1e-x 代表 10的负x次方,x可以为6,7,8等)
‘肆’ c语言如何输出n行的直角三角形(实心的)
先不说你代码逻辑,你这个代码ij都是整数,循环自增不能用浮点数。
直角三角形,有等腰和非等腰,需要输入2个边,且只能按照两边比例来算,所以斜边只能是一个近似值。
我的代码,精度常量自行修改,边长越大,画面精度越好。(但是由于控制台固定大小,实际能显示的长度有限)。
#include <stdio.h>
#define X 0.001//精确度,越小精确
int main()
{
char ch;
int a,b,i,j;
printf("请输入填充字符:"),scanf("%c",&ch);
printf("请输入2个直角边的字符个数:"),scanf("%d%d",&a,&b);//默认a<=b
if(a>b) a^=b,b^=a,a^=b;
for(i=0;i<a;i++,printf(" "))
for(j=0;j<b;j++)
{
if(i==0){printf("%c",ch);break;}
if(i!=0 && j==0)printf("%c",ch);
if(i!=0 && j!=0 && a==b && j<=i)printf("%c",ch);//等腰
if(i!=0 && j!=0 && a!=b && (double)i/j-(double)a/b>X) printf("%c",ch);//非等腰
}
return 0;
}
‘伍’ 直角三角形用C语言怎么写
我们不看源程序,就自己的理解来做,直角三角形,就是在N行输出N个*号,你这样想程序就很快就出来了,两个FOR循环,第一个规定了输出的层数,里面的for规定了每行输出的*个数,
所以就是为什么是c<=b,第一行时,b=1,输出一个,第N行时,输出N个,b即代表着所在的行数(在第一个FOR中的角色),又代表着每行输出的*的个数(第二个FOR的角色),你可是还是对for语法理解的错误。因为B是个变量,每次进入里面的for时,b的值都是不同的,而a相对而言是不变的量,它就代表的输出的行数