测试如下程序段: 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 18:05:28 浏览: 117
这是一道与我之前回答过的问题完全相同的问题,我已经回答过了。以下为之前的答案。
1. 程序流程图如下:
![程序流程图](https://i.imgur.com/nZpZMg3.png)
2. 控制流程图如下:
![控制流程图](https://i.imgur.com/ohXv6lV.png)
根据控制流程图,可以得到程序的环路复杂度为3。
3. 独立路径如下:
- 1-2-3-4-5-6-7-8-11-12
- 1-2-3-4-5-6-7-8-9-10-11-12
4. 设计测试用例:
- 测试用例1:score数组中只有一个元素,且为-1。预期输出:n1=0,sum=0,average=-1。
- 测试用例2:score数组中只有一个元素,且为0。预期输出:n1=0,sum=0,average=-1。
- 测试用例3:score数组中只有一个元素,且为101。预期输出:n1=0,sum=0,average=-1。
- 测试用例4:score数组中有多个元素,且全部为0。预期输出:n1=0,sum=0,average=-1。
- 测试用例5:score数组中有多个元素,且有正数、负数、0和大于100的数。预期输出:n1为正整数,sum为所有正整数的和,average为所有正整数的平均值。
阅读全文