编写一个判断三角形形状的程序:(1)对编写的三角形程序,画出其程序流程图;分析程序流程图,确定程序分支;(2)设计测试用例进行白盒测试,使其分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖以及路径覆盖。(3)使用基本路径法设计测试用例
时间: 2023-06-12 13:08:01 浏览: 234
以下是判断三角形形状的程序:
```
#include <stdio.h>
int main()
{
int a, b, c;
printf("请输入三角形的三边长:");
scanf("%d %d %d", &a, &b, &c);
if (a + b > c && a + c > b && b + c > a)
{
if (a == b && b == c)
{
printf("这是一个等边三角形\n");
}
else if (a == b || b == c || a == c)
{
printf("这是一个等腰三角形\n");
}
else if (a * a + b * b == c * c || a * a + c * c == b * b || b * b + c * c == a * a)
{
printf("这是一个直角三角形\n");
}
else
{
printf("这是一个普通三角形\n");
}
}
else
{
printf("这不是一个三角形\n");
}
return 0;
}
```
以下是程序流程图:
![判断三角形形状程序流程图](https://i.imgur.com/Nh4shMm.png)
根据程序流程图,可以确定以下程序分支:
1. 输入的三边长能否构成三角形
2. 三角形的形状
下面进行测试用例的设计:
1. 语句覆盖
输入:1 1 1
期望输出:这是一个等边三角形
输入:3 4 5
期望输出:这是一个直角三角形
输入:6 8 10
期望输出:这是一个直角三角形
2. 判定覆盖
输入:1 1 1
期望输出:这是一个等边三角形
输入:3 4 5
期望输出:这是一个直角三角形
输入:6 8 10
期望输出:这是一个直角三角形
输入:2 2 5
期望输出:这不是一个三角形
3. 条件覆盖
输入:1 1 1
期望输出:这是一个等边三角形
输入:3 4 5
期望输出:这是一个直角三角形
输入:6 8 10
期望输出:这是一个直角三角形
输入:2 2 5
期望输出:这不是一个三角形
输入:1 2 3
期望输出:这不是一个三角形
4. 判定/条件覆盖
输入:1 1 1
期望输出:这是一个等边三角形
输入:3 4 5
期望输出:这是一个直角三角形
输入:6 8 10
期望输出:这是一个直角三角形
输入:2 2 5
期望输出:这不是一个三角形
输入:1 2 3
期望输出:这不是一个三角形
5. 组合覆盖
输入:1 1 1
期望输出:这是一个等边三角形
输入:3 4 5
期望输出:这是一个直角三角形
输入:6 8 10
期望输出:这是一个直角三角形
输入:2 2 5
期望输出:这不是一个三角形
输入:1 2 3
期望输出:这不是一个三角形
6. 路径覆盖
根据程序流程图,可以得到以下基本路径:
1 → 2 → 3 → 4 → 5 → 6 → 9
1 → 2 → 3 → 4 → 5 → 7 → 9
1 → 2 → 3 → 4 → 8 → 9
1 → 2 → 3 → 4 → 10
1 → 2 → 11
其中,第一个基本路径覆盖了所有语句,第二个基本路径覆盖了所有判定,第三个基本路径覆盖了所有条件,第四个基本路径覆盖了所有判定/条件,第五个基本路径覆盖了所有组合,第六个基本路径覆盖了所有路径。
因此,设计以下测试用例:
输入:1 1 1
期望输出:这是一个等边三角形
输入:3 4 5
期望输出:这是一个直角三角形
输入:6 8 10
期望输出:这是一个直角三角形
输入:2 2 5
期望输出:这不是一个三角形
输入:1 2 3
期望输出:这不是一个三角形
阅读全文