C语言 构成直角三角形的条件

描述读入3个非零整数后,判别这三个值是否可以表示一个直角三角形的三条边。输入第一行是测试数据组数n。下面有n行,每行分别是用空格隔开的3个int类型整数,代表三角形的三条... 描述
读入3个非零整数后,判别这三个值是否可以表示一个直角三角形的三条边。

输入
第一行是测试数据组数n。下面有n行,每行分别是用空格隔开的3个int类型整数,代表三角形的三条边。

输出
输出为n行,对应第n行输入的结果。判断输入的三个值是否可以表示一个直角三角形的三条边,如果能则输出1,如果不能输出0。

样例输入
2
3 4 5
5 6 1样例输出
1
0
我的代码如下:
#include <stdio.h>
main(){
long t,a,b,c;
scanf("%d",&t);
while(t--){
scanf("%d %d %d",&a,&b,&c);
if((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");
}
}
为什么提交后老是提示结果出错??
http://www.bianchengla.com/course/cpp/practise/problem?id=1198
展开
 我来答
匿名用户
2010-07-23
展开全部
#include <stdlib.h>
#include <stdio.h>

void sort( int *pArr, int cnt )
{
int i = 0, j=0, tmp ;

for( ;i<cnt;i++)
{
for( j=i;j<cnt;j++ )
{
if( pArr[i] < pArr[j] )
{
tmp = pArr[i] ;
pArr[i] = pArr[j] ;
pArr[j] = tmp ;
}
}
}
}

int main( int argc, char* argv[])
{
FILE *pFile = fopen( "demo.txt", "r" );
char line[100] ;
char *pLine = NULL ;
int Arr[3], n ;

if( NULL == pFile )
{
exit( 1 ) ;
}

//fread
pLine = fgets( line, 99, pFile) ;
sscanf( pLine, "%d", &n ) ;
//fscanf( pFile, "%d", &n ) ;
printf( "Lines: %d\n", n ) ;

while( pLine = fgets( line, 99, pFile) )
{
sscanf( pLine, "%d %d %d", Arr, Arr+1, Arr+2 ) ;

printf( "Lines: a=%d; b=%d; c=%d is ", Arr[0], Arr[1], Arr[2] ) ;
sort( Arr, 3 ) ;
if( Arr[0]*Arr[0] == Arr[1]*Arr[1]+Arr[2]*Arr[2])
{
printf( "L triangle\n" ) ;
}
else
{
printf( "NOT L triangle\n" ) ;
}
}

fclose( pFile ) ;
printf( "Xp Mode" ) ;

return 0 ;
}
匿名用户
2010-07-23
展开全部
修改如下(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;
}

//---------------------------------------------------------------------------
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友dd6e035
2010-07-23 · 超过12用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:29.7万
展开全部
#include <stdio.h>
main(){
long t,a,b,c;
scanf("%d",&t);
int ab[100];
int i = 0;
for(i=0; i<t; ++i)
{
scanf("%d %d %d",&a,&b,&c);
if((a*a+b*b==c*c)||(c*c+b*b==a*a)||(a*a+c*c==b*b))
{
ab[i] = 1;
}
else
{
ab[i] = 0;
}
}
for(i=0; i<t; ++i)
{
printf("%d\n",ab[i]);
}
}
你试试看这个代码行不?如果不行,可能就要加上a b c是否小于0的判断。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ec39437d4
2010-07-23 · TA获得超过225个赞
知道小有建树答主
回答量:495
采纳率:0%
帮助的人:303万
展开全部
main(){
long t,test=0,i,temp;
int a,b,c;

scanf("%d",&t);
temp = t;
while(t--){
scanf("%d %d %d",&a,&b,&c);
if((a*a+b*b==c*c)||(c*c+b*b==a*a)||(a*a+c*c==b*b))
test = (test<<1)|0x01;
else
test = (test<<1)&0xfffffffe;
}
for(i=0;i<temp;i++)
{
if(((test>>(temp-i-1))&0x00000001))
printf("1\n");
else
printf("0\n");
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黒木4312
2010-07-23 · TA获得超过788个赞
知道小有建树答主
回答量:371
采纳率:0%
帮助的人:492万
展开全部
你的样例输入与代码不相符,依据代码应这样输入
2
3 4 5【enter】
1
5 6 1【enter】
0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式