1.测试如下程序段: main() { int i=1;n1=n2=0; float sum=0; float average; float score[100]; while(score[i]!=-1&&n2<50) { n2=n2+1; if(score[i]>0&&score[i]<100) { n1=n1+1; sum=sum+score[i]; } i=i+1; } if(n1>0) average=sum/n1; else average=-1; printf(“n1=%d,sum=%f,average=%f\n”,n1,sum,average); } 要求:①画出这段代码的程序流程图和控制流程图;②计算环路复杂度;③列出独立路径;④设计测试用例。
时间: 2023-12-05 07:05:29 浏览: 77
这是一道重复执行语句的程序题,对于您的问题,我可以给出以下答案:
1. 画出程序流程图和控制流程图
程序流程图:
![程序流程图](https://img-blog.csdn.net/20171230110659415?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hpdGdwdDEyMzQ1Njc4OS9pbWFnZTM5MjI1NDAwMDE5NzE4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80)
控制流程图:
![控制流程图](https://img-blog.csdn.net/20171230110709008?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hpdGdwdDEyMzQ1Njc4OS9pbWFnZTM5MjI1NDAwMDE5NzE4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80)
2. 计算环路复杂度
根据控制流程图,可以得到如下判定结构:
- if (score[i] > 0 && score[i] < 100)
因此,程序的环路复杂度为2。
3. 列出独立路径
根据程序的控制流程图,可以列出如下独立路径:
- 1->2->3->4->5->6->7->8
- 1->2->3->4->5->6->9->10
- 1->2->3->4->5->11->12
- 1->2->3->4->13->14->15
- 1->2->3->16
4. 设计测试用例
根据独立路径进行测试用例设计:
- 输入数组score为{-1},期望输出:n1=0,sum=0,average=-1
- 输入数组score为{60,70,80,90,-1},期望输出:n1=4,sum=300,average=75
- 输入数组score为{101,-1},期望输出:n1=0,sum=0,average=-1
- 输入数组score为{0,-1},期望输出:n1=0,sum=0,average=-1
阅读全文