【本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究。若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!】

请画出下面代码的程序流程图及对应的流图,并计算环形复杂度。

void func(int x,int y){ //画图时,不需要考虑此行
while(x>0){ //1
int sum = x+y; //2
if(sum>1){ //3
x--; //4
y--; //5
}else{
if(sum<-1){ //6
a-=2; //7
}else{
a-=4; //8
} //9
} // end of if(sum>1) //10
} // end of while
x = x+y; //11
} // end of func //画图时,不需要考虑此行

程序流程图画法总结:

  1. 只考虑方法体内代码。
  2. if..else..后必有被两条箭头所指节点,可以为空白,但必须有数字。
  3. 保留开始和结尾的空白圆框但不写数字。

环形复杂度的计算方法:

  1. 流图中线性无关的区域数等于环形复杂度。
  2. 流图G的环形复杂度 V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。
  3. 流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。

上述例题的判定条件是单一的,如果涉及IF a OR b这种包含复合条件的伪码,例如:

IF a OR b
then procedure x
else procedure y
ENDIF

版权声明

【本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究。若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!】

最新文章

  1. python 模拟登录--day1
  2. C语言混乱代码大赛
  3. docker启动Mysql(转)
  4. 黄聪:如何阻止iframe里引用的网页自动跳转
  5. HttpModule在Web.config的配置和动态配置
  6. (转)基于即时通信和LBS技术的位置感知服务(二):XMPP协议总结以及开源解决方案
  7. linux awk命令详解(转)
  8. dispatch_async 与 dispatch_get_global_queue 的使用方法
  9. ios中strong, weak, assign, copy
  10. 转载:C# Office 开发
  11. JAVAFX-4 开发应用
  12. 最小化安装CentOS7的网卡设置
  13. Linux下间隔多少秒 (即以秒为单位) 去执行某条命令或某个shell脚本的操作方法【转】
  14. 4-HTML Computer Code Elements
  15. P1010 幂次方 递归模拟
  16. hdu多校第3场A.Ascending Rating
  17. python 学习 面向对象编程
  18. MySQL错误代码
  19. Linux下ssh的使用
  20. dojo和jquery混合使用

热门文章

  1. Android_四大组件之ContentProvider
  2. 用TensorFlow搭建一个万能的神经网络框架(持续更新)
  3. 【JVM】关于OOM的二三事
  4. 文件包含漏洞(file inclusion)
  5. 【Hadoop】hdfs的秘密,namenode,datanode,yarn,安全模式,fsimage,edits...
  6. Java实现 LeetCode 735 行星碰撞(栈)
  7. Java实现 LeetCode 343 整数拆分(动态规划入门经典)
  8. Java实现 LeetCode 215. 数组中的第K个最大元素
  9. Java实现 蓝桥杯VIP 算法提高 计算器
  10. Java实现 LeetCode 146 LRU缓存机制