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 展开
读入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 展开
7个回答
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 ;
}
#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;
}
//---------------------------------------------------------------------------
主要是加上判断能否构成三角形的部分,其次,题目要求使用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;
}
//---------------------------------------------------------------------------
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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的判断。
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的判断。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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");
}
}
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");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的样例输入与代码不相符,依据代码应这样输入
2
3 4 5【enter】
1
5 6 1【enter】
0
2
3 4 5【enter】
1
5 6 1【enter】
0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |