程序输出由这三条边构成的三角形类型:等边三角形,等腰三角形,一般三角形,直角三角形或非三角形。如果输入值不满足前三个条件中的任何一个,程序给出相应信息提示,如“请输入1~100之间的整数”等。如果a,b,c满足con1、con2、con3中的任何一个,则程序输出下列4种情况之一:1)如果不满足条件con1、con2、con3中的一个,则程序输出为“非三角形”。
2)如果3条边相等。则程序输出为“等边三角形”。
3)如果恰好有两条边相等,则输出“等腰三角形”。
4)如果三条边都不等且满足“a*a+b*b=c*c”,则输出“直角三角形”。
5)如果三条边都不等,又无特殊关系,则输出“一般三角形”。
对三角形问题分析,可以得出等价类表:
三角形问题的无效等价类测试:
三角形问题的等价测试:
5、实验源代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace sanjiaoxing
{
class Program
{
static void Main(string[] args)
{
int i = 1;
while (i == 1)
{
float a1;
float b1;
float c1;
Console.WriteLine("请输入三角形的一边a (1~100之间的整数) :");//提示输入三角形的第一条边并且在1~100之间的整数
a1 = int.Parse(Console.ReadLine());
Console.WriteLine("请输入三角形的一边b(1~100之间的整数):");//提示输入三角形的第二条边是1~100之间的整数
b1 = int.Parse(Console.ReadLine());
Console.WriteLine("请输入三角形的一边c(1~100之间的整数):");//提示输入三角形的第三条边是1~100之间的整数
c 1= int.Parse(Console.ReadLine());
//先判断是否符合输入要求
int a=(int)a1;
int b=(int)b1;
int c=(int)c1;
if((a1-a)!=0||(b1-b)!=0||(c1-c)!=0)
{
Console .WriteLine ("请输入1~100之间的整数");
}
//输入三条边后可以判断是什么三角形
//先判断三条边是不是在1~100之间
else if (1 <= a && a <= 100 && 1 <= b && b <= 100 && 1 <= c && c <= 100)
{
//判断是不是三角形
if (a < b + c && b < a + c && c < a + b)
{
//判断是不是等腰三角形
if (a == b || b == c || a == c)
{
//判断是不是等边三角形
if (a == b && b == c)
{
Console.WriteLine("等边三角形");
}
else
{
Console.WriteLine("等腰三角形");
}
}
else if (a * a + b * b == c * c || b * b + c * c == a * a || a * a + c * c == b * b) {
Console.WriteLine("直角三角形");
}
else
{
Console.WriteLine("一般三角形");
}
}
else
{
Console.WriteLine("非三角形");
}
}
else if (a < 0 || b < 0 || c < 0)
{
Console.WriteLine("边长不能为负");
}
else if (a == 0 || b == 0 || c == 0)
{
Console.WriteLine("边不能为0");
}
else
{
Console.WriteLine("请输入1~100之间的整数");
}
}
}
}
}
6、实验结果与分析
三角形问题的无效等价类测试:
三角形问题的等价测试:
输出的结果全都符合测试预期输出结果
7、实验体会与建议
以前编程序只是考虑如何输出正确的结果,就是只考虑有效等价类,没有想过如果输入错误的时候还会有提示没有考虑无效等价类。这次学了软件测试,让我在编写程序时考虑更多的方面,思路更加清晰,可以使程序更完美,完善。
在此次测试中发现,其实输入边的时候,可以直接逐条提示输入三条边,这样程序就不会出现只输入一条边或是大于三条边的情况,会带来更大的方便。