问答题
针对一下C语言程序,请按要求回答问题。
已知weekday. c源程序如下:
#include<stidio. h>
#include<conio. h>
/ *主函数* /
Int main()
{
Char letter;
Printf("please input the first letter,"Y'to exit!/n");
While((letter=getch())!="Y")//当输入字母为Y时结束
{
Switch(letter)
{
Case'S':
Printf("%c/n",letter);
Printf("please input second letter/n");//输入第二个字母
If((letter=getch())=='a')
Printf("Saturday/n");
Else if(letter=='u')
Printf("Sunday/n");
Else printf('data error/n);
Break;
Case'F':
Printf("fridaykn");
Break;
Case 'M':
Printf("mondayha");
Break;
Case 'T':
Printf("%c/n",letter);
Printf("please input second letter/a");//输入第二个字母
If((letter=getch())=='u')
Printf("Tuesday/n"):
Else if(letter=='h')
Printf("Thursday/n");
Break;
Case 'W':
Printf("Wednesday/n");
}
}
Return 0;
}
(1) 画出主函数main的控制流程图;
(2) 设计一组测试用例,使main函数的语句覆盖率尽量达到100%;
(3) Main函数的语句覆盖率能否达到100%?如果认为无法达到,需说明原因。
【正确答案】
【答案解析】[path1]1,2
[path2]2,3
[path3]2,3,4,5,22
[path4]2,3,6,7,22
[path5]2,3,6,8,22
[path6]9,10,22
[path7]11,12,22
[path8]13,14
[path9]13,14,15,16
[path10]13,14,17,18,22
[path11]1 3,14,8,22
[path12]19,20,22
[path13]19,8,22
生成测试用例,确保基本路径集中每条路径的执行:
path1.输入数据y,输出的结果程序结束返回值0
path2.输入数据s,输出结果“s输入第二个字母”
path3.输人数据s后,输入数据a,输出结果“Saturday”
path4.输入数据s后,输入数据u,输出结果“sunday”
path5.输入数据s后,输入数据非a非u,输出结果“data erroi”
path6.输入数据f,输出结果“friday”
path7.输入数据m,输出结果“monday”
path8.输入数据t,输出结果“输入第二个字母”
path9.输入数据t后,输入数据u,输出结果“tuesday”
path10.输入数据t后,输入数据h,输出结果“thursday”
path11.输入数据t后,输入数据非u非h,输出结果“data crror”
pathl2.输入数据w,输出结果“Wednesday"’
path13.输入数据defalt,输出结果“data error”
3.不能达到100%,一些独立的路径如此程序中的[输入],往往不是完全孤立的,有时候它是程序正常的控制流的一部分,这是这些路径的测试可以是另一条路径测试的部分。