编程之美:第四章 数字之趣 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
- 编程之美:第四章 数字之趣 4.8三角形测试用例
- 编程之美:第四章 数字之趣 4.4点是否在三角形内
- 读书笔记之编程之美 - 4.8 三角形测试用例
- 编程之美4.8 三角形测试用例
- 编程之美----三角形测试用例扩展问题2
- 编程之美—《三角形测试用例》
- 编程之美:第四章 数字之趣 4.10数字哑谜和回文
- 编程之美:第四章 数字之趣 4.10_2数字哑谜和回文
- 编程之美:第四章 数字之趣 4.1金刚坐飞机问题
- 编程之美:第四章 数字之趣 4.2瓷砖覆盖地板
- 编程之美:第四章 数字之趣 4.3买票找零
- 编程之美:第四章 数字之趣 4.5磁带文件存放优化
- 编程之美:第四章 数字之趣 4.6桶中取黑白球
- 编程之美:第四章 数字之趣 4.7蚂蚁爬杆
- 编程之美:第四章 数字之趣 4.9数独知多少
- 编程之美:第四章 数字之趣 4.11扫雷游戏的概率
- 编程之美----数字回文
- 编程之美------之数字之魅
- 收集的学习资料
- maven 之 nexus 私服搭建学习总结
- 改造mondrian的构想
- Spark流编程指引(三)-------------------------------------初始化StreamingContext
- HDU 2072 单词数 map
- 编程之美:第四章 数字之趣 4.8三角形测试用例
- HDOJ 1018 Big Number(大数)
- FPGA配置和外部存储器烧写问题
- Linux常用命令-文件处理命令
- 网址信息收集器
- Android设计模式系列-组合模式
- hdu4355
- nyoj 6 喷水装置(一)【贪心】
- 线程间通信--生产消费