画出上述代码的控制流图
时间: 2024-06-11 22:02:04 浏览: 14
控制流图是一种用于描述程序执行过程的图形化表示方法。对于上述代码,其控制流图如下:
![控制流图](https://img-blog.csdnimg.cn/20210914200705491.png)
在控制流图中,方框表示一个基本块(basic block),即一段不包含分支或循环语句的代码;菱形表示一个条件分支语句,其中条件表达式为判断条件,根据判断结果选择不同的出口;圆角矩形表示一个循环语句,其中条件表达式为循环条件,每次循环根据条件选择是否继续循环。在控制流图中,每个基本块都有且只有一个入口和一个出口,分支语句和循环语句会导致控制流从一个基本块转移到另一个基本块。
相关问题
2、程序模块 Functionl 代码如下: public int Functionl ( int num , int cycle , boolean flag ) {int ret =0; while ( cycle >0) { if ( flag == true ) { ret = num -10; Break ; } else { if ( num %2==0) { ret = ret *10; } else { ret = ret +1; } } cycle --; } return ret ; } (1)画出程序控制流图,计算控制流图的环路复杂度。 (2)导出基本路径。 (3)设计基本路径覆盖测试用例。
以下是程序控制流图:
![image.png](attachment:image.png)
控制流图的环路复杂度为 5。
基本路径为:
1. 1 → 2 → 3 → 13
2. 1 → 2 → 4 → 5 → 6 → 7 → 11 → 12 → 13
3. 1 → 2 → 4 → 5 → 6 → 8 → 9 → 10 → 11 → 12 → 13
设计基本路径覆盖测试用例:
我们需要至少设计三组测试用例,来覆盖上述三个基本路径。
1. 当 flag 为 true 时,执行第一条基本路径,此时 num 可以为任意整数,cycle 为正整数。
2. 当 flag 为 false 且 num 为偶数时,执行第二条基本路径,此时 num 必须为偶数,cycle 为正整数。
3. 当 flag 为 false 且 num 为奇数时,执行第三条基本路径,此时 num 必须为奇数,cycle 为正整数。
比如:
1. Functionl(5, 3, true),期望返回 -5。
2. Functionl(4, 2, false),期望返回 0。
3. Functionl(3, 4, false),期望返回 111。
以下代码由C语言书写,能根据指定的年、月计算当月所含天数。 int GetMaxDay( int year, int month ) { int maxday = 0; if ( month >= 1 && month <= 12 ) { if ( month == 2 ) { if ( year % 4 == 0 ) { if ( year % 100 == 0 ) { if ( year % 400 == 0 ) maxday = 29; else maxday = 28; } else maxday = 29; } else maxday = 28; } else { if ( month == 4 || month == 6 || month == 9 || month == || ) maxday = 30; else maxday = 31; } } return maxday; } 请画出以上代码的控制流图。 请计算上述控制流图的环路复杂度V(G)。 假设year的取值范围是1000<year<2001,请使用基本路径测试法为变量year、 month设计测试用例(写出year取值、month取值、maxday预期结果),使之满足基本路径覆盖要求
抱歉,作为语言模型,我无法在此处插入图片,但我可以为您提供一份文字版的控制流图和环路复杂度计算。
控制流图如下:
```
┌───┐
│month≥1 and month≤12│
└───┘
│
┌────┴────┐
│ month=2 │
└────┬────┘
│
┌────┴────┐
│year%4==0│
└────┬────┘
│
┌────┴────┐
│year%100=0│
└────┬────┘
│ │
│ │
┌─┴──┴─┐
│year%400=0│
└──┬───┬──┘
│ │
maxday=29 maxday=28
│
┌────┴────┐
│ month≠2 │
└────┬────┘
│
┌────┴────┐
│ month=4 │
└────┬────┘
│ │
│ │
┌─┴──┴─┐
│month=6 │
└──┬───┬──┘
│ │
maxday=30 maxday=30
│
┌────┴────┐
│ month≠4,6,9,11 │
└────┬────┘
│
maxday=31
│
return
```
环路复杂度V(G) = E-N+2 = 14-12+2 = 4
接下来,我们使用基本路径测试法为变量year、month设计测试用例,使之满足基本路径覆盖要求,即每个基本路径至少被执行一次。
基本路径1: 1-2-3-4-7-8-11-14
取值:year=2000, month=2, maxday=29
基本路径2: 1-2-3-5-6-7-8-11-14
取值:year=2001, month=2, maxday=28
基本路径3: 1-2-9-10-11-14
取值:year=2000, month=4, maxday=30
基本路径4: 1-2-9-12-13-11-14
取值:year=2000, month=5, maxday=31
通过以上四组测试用例,我们可以实现对基本路径的完全覆盖。