首页 > 试题广场 >

设计直角三角形测试用例。

[问答题]
设计直角三角形测试用例。
输入三个数,设计一个函数,使如果是直角三角行则返回1,如果是三角行但不是直角三角行则返回0,如果不是三角形或数据错误则返回-1。
1. 设计测试用例,包括目的,输入,预期结果。
2. 用你熟悉的语言,实现这段功能。
推荐
1.考虑用等价类划分的方法 ,设三条边分别为a,b,c,
有效等价类 用例编号 无效等价类 用例编号
三个数为正数 1 三个数为空 2


 三个数中出现了负数 3


输入的有非数字 4


输入少于三个数 5
下面是测试用例
输入条件 有效等价类 无效等价类
是否是三角形
a>0,b>0,c>0,
a+b>c,a+c>b,b+c>a
a<=0,b<=0,c<=0,
a+b<=c,a+c<=b,b+c<=a
是三角形但是非直角三角形 a^2+b^2=c^2或a^2+c^2=b^2c^2+b^2=a^2 a,b,c三者中有任意两者相等或者三者都相等
测试用例
序号 输入 输出
1 a=1,b=2,c=3 -1
2 a=0,b=2,c=3
-1
3 a=0 ,b=2
-1
4 -1
5 a=3,b=4,c=5
1
6 a=3 ,b=3 ,c=3
0

2.#include<stdio.h> 
void main()
{
float a,b,c; 
printf("请输入三角形的三条边");
scanf("%f,%f,%f",a,b,c);
if(a<=0||b<=0||c<=0||a+b<=c||a+c<=b||b+c<=a)
 {printf("-1");}
else
{
if(a*a+b*b=c*c||a*a=b*b+c*c||a*a+c*c=b*b) 
printf("1");
else
printf("0");
}
}



编辑于 2015-02-03 20:28:50 回复(1)

输入条件

有效等价类

无效等价类

 

 

 

是三角形的三条边

编号

内容

编号

内容

1

2

3

4

5

6         

  a > 0

  b > 0

  c > 0

  a+b > c

  a+c > b

  c+b > a

7

8

9

10

11

12

a <= 0

  b < =0

  c < =0

  a+b <= c

  a+c <= b

  c+b <= a

 

是直角形的三条边

13

a^2+b^2 = c^2

16

a^2+b^2 c^2

14

a^2+c^2 = b^2

17

a^2+c^2 b^2

15

b^2+c^2 =a^2

18

c^2+b^2 a^2

测试用例:

1 3 4 5 (覆盖 1 2 3 4 5 6 13 14 15       输出: 1

2 0 1 2 (覆盖 7 2 3                                                输出  -1

3 1 0 2 (覆盖 8 2 3                                                输出  -1

4 1 2 0 (覆盖 8 2 3                                               输出  -1


5 2 3 2 (覆盖 1 2 3 4 5 6 16 17 18         输出  0
#include<iostream>
using namespace std;
int IsTriangle(int a,int b,int c)
{
	int result = -1;
	if(a>0&&b>0&&c>0)
	{
		if((a+b)>c&&(a+c)>b&&(b+c)>a)
			result = 0;
		if((a*a+b*b)==(c*c)||(a*a+c*c)==(b*b)||(b*b+c*c)==(a*a))
			result = 1;
	}
	return result;
}
int main()
{
	int a,b,c;
	while(cin>>a>>b>>c)
	{	cout<<IsTriangle(a,b,c)<<endl;}
	system("pause");
	return 0;
}

发表于 2015-09-05 10:15:07 回复(0)
test case1:3,4,5  return 1
test case2:4,4,32  return 1
test case3:-1,-1,-1  return -1

发表于 2018-04-20 19:11:35 回复(0)