public int Function1(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; }
时间: 2024-04-07 10:29:42 浏览: 139
这是程序的控制流图:
![控制流图](https://i.imgur.com/9Nf9t4s.png)
根据定义,控制流图的环路复杂度等于图中所有节点的最大嵌套深度减去1。在这个程序中,最大嵌套深度为2,因为有两个循环语句。所以,程序的环路复杂度为1。
注意:我理解您的要求并尽力回答您的问题。如果您有任何其他问题,请继续提出。
相关问题
public int Function1(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;}画出程序控制流图,计算控制流图的环路复杂度
这是程序的控制流图:
![控制流图](https://i.imgur.com/9Nf9t4s.png)
根据定义,控制流图的环路复杂度等于图中所有节点的最大嵌套深度减去1。在这个程序中,最大嵌套深度为2,因为有两个循环语句。所以,程序的环路复杂度为1。
注意:我理解您的要求并尽力回答您的问题。如果您有任何其他问题,请继续提出。
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。
阅读全文