编程之美:第四章 数字之趣 4.8三角形测试用例

来源:互联网 发布:php输出当前时间 编辑:程序博客网 时间:2024/06/10 18:53
/*三角形测试用例:输入三角形的三条边长,判断是否能构成一个三角形(不考虑退化三角形,即面积为0的三角形),是什么样的三角形(直角,锐角,钝角,等边,等腰)函数声明:byte GetTriangleType(int,int,int)1如何用一个byte来表示各种输出情况2如果你是一名测试工程师,应如何写测试用例来完成功能测试?问题1的解法:分为图形{非三角形    {三角形{直角三角形           {锐角三角形   {钝角三角形   {等边三角形   {等腰三角形一个byte可以表示0~255共256种状态,但是注意一个直角三角形同时也可能是等腰三角形,如果要描述得更精确,需要扩展编码。76543210三角                    直角    锐角    钝角    等边    等腰用每一位表示一种状态问题2的解法:测试分为3个方面:1正常输入,2非法输入,3边界值输入预期输入:a,b,c(三个数值,代表三条边的长度)1程序在正常输入下的测试用例id输入预期输出描述1(4,1,2)00000000非三角形(全0表示非三角形,最高位为1表示三角形)2(5,5,5)10001011                等边三角形3(2,2,3)10000001                等腰三角形4(3,4,5)10010000                直角三角形5(2,3,4)10000100钝角三角形6(100,99,2)10001000                钝角三角形非法输入:用例id输入预期输出描述8(0,1,2)000000000值9(-1,1,2)00000000负值10(a,1,2)00000000类型错误边界输入:用例id输入预期输出描述11(50,50,1)10000001等腰三角形12(50,50,2)10000001等腰三角形13(100,100,99)10000001等腰三角形14(100,100,100)10001011等边三角形15(50,50,100)00000000非三角形16(1,1,1)10001011等边三角形17(1,1,2)00000000非三角形18(1,1,99)00000000非三角形19(1,1,100)00000000非三角形扩展问题:1如果三角形各个边长是浮点数,测试用例会有什么变化2如果你负责测试文本编辑软件Word的"另存为。。。"功能,你能写出多少有条理,有组织的测试输入:4 1 2输出:非三角形*//*关键:1 76543210三角                    直角    锐角    钝角    等边    等腰2 char rectangleTest(int a,int b,int c)//这里完全封装,这样主调函数就不用管里面发生什么,只需要做传参数,提高封装性,参数检查也不要放在process里面3 //判断是锐角三角形,我们根据余弦定理,a*a = b*b + c*c - 2b*c*cosA,最长边对应的角最大,只需要求出较小的两边的平方和 - 最大边的平方=0,直角,>0钝角int iRes = iMin*iMin + iMid*iMid - iMax*iMax;if(0 == iRes)//判断是否是直角三角形,将从低到高,第5位设置为1,即让0000 0000 与 1001 0000或即可{byte |= 10010000;printf("直角");}else if(iRes > 0){byte |= 10001000;printf("锐角");*/#include <stdio.h>void print(char byte){//if((byte | 0) == 0)//{//printf("00000000 非三角形\n");//}//else if()}int min(int a,int b,int c){int iMin = a < b ? a : b;return iMin < c ? iMin : c;}int max(int a,int b,int c){int iMax = a > b ? a : b;return iMax > c ? iMax : c;}/*76543210三角                    直角    锐角    钝角    等边    等腰*/char rectangleTest(int a,int b,int c)//这里完全封装,这样主调函数就不用管里面发生什么,只需要做传参数,提高封装性,参数检查也不要放在process里面{char byte;byte &= 0;//与0求与,结果自然为0int iLen = sizeof(char);if(a <= 0 || b <= 0 || c <= 0 || a + b <= c || a + c <= b || b + c <= a)//非三角形{printf("非三角形\n");return byte;}int iMin = min(a,b,c);int iMax = max(a,b,c);int iMid = a + b + c - iMin - iMax;//判断是锐角三角形,我们根据余弦定理,a*a = b*b + c*c - 2b*c*cosA,最长边对应的角最大,只需要求出较小的两边的平方和 - 最大边的平方=0,直角,>0钝角int iRes = iMin*iMin + iMid*iMid - iMax*iMax;if(0 == iRes)//判断是否是直角三角形,将从低到高,第5位设置为1,即让0000 0000 与 1001 0000或即可{byte |= 10010000;printf("直角");}else if(iRes > 0){byte |= 10001000;printf("锐角");}else//判断钝角三角形{byte |= 10000100;printf("钝角");}if( iMin==iMid && iMid==iMax)//判断是等边三角形,异或10000010{byte |= 10000010;printf("等边");}if((iMin == iMid && iMid != iMax) || (iMid == iMax && iMin != iMid))//判断是等腰三角形,异或10000001{byte |= 10000001;printf("等腰");}printf("三角形\n");return byte;}void process(){int a,b,c;char byte;while(EOF != scanf("%d %d %d",&a,&b,&c)){byte = rectangleTest(a,b,c);}}int main(int argc,char* argv[]){process();getchar();return 0;}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 两眼角下面长斑怎么办 放环脸上会长斑怎么办 脸上起黑色的斑怎么办 经常熬夜脸上长斑怎么办 最近脸上长了好多斑怎么办 脸颊突然长斑了怎么办 长斑怎么办能根治吗 脸突然长斑了怎么办 生气后脸上长斑怎么办 脸上长了座疮怎么办 喝了啤酒吃柿子怎么办 脸上长了痤疮该怎么办 脸上老长闭口痘怎么办 右脸颊一直长痘怎么办 痘痘粉刺反复长怎么办 长痘留下的红印怎么办 熬夜长出的痘痘怎么办 脸上两边长痘痘怎么办 我左脸比右脸大怎么办 左脸莫名肿了怎么办 牙疼得半边脸痛怎么办 手和脸突然发麻怎么办 右半边脸麻木了怎么办 左边脸突然肿了怎么办 左半边脸皮肤疼怎么办 脸内侧的肉肿了怎么办 上火引起的脸肿怎么办 脸肿里面有硬块怎么办 内分泌失调引起的肥胖怎么办 宝宝接种证丢了怎么办 不给补办接种证怎么办 儿童接种证丢了怎么办 疫苗接种本丢了怎么办 脊灰滴剂滴多了怎么办 鞋小了挤脚趾头怎么办 大母脚趾头疼是怎么办 小脚趾内侧长茧怎么办 小脚趾肿了很痛怎么办 穿袜子大脚趾痛怎么办 脚指头长水泡很痒怎么办 走路脚打起泡了怎么办