测试如下程序段: 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,总和=%f,平均值=%f\n“,n1,总和,平均值);} 要求:①画出这段代码的程序流程图和控制流程图;②计算环路复杂度;③列出独立路径;④设计测试用例。
时间: 2024-03-31 21:36:04 浏览: 27
以下是对于您的问题的回答:
①程序流程图:
![程序流程图](https://i.imgur.com/oVt8ZoP.png)
①控制流程图:
![控制流程图](https://i.imgur.com/haL3xMg.png)
②计算环路复杂度:
根据上述控制流程图,可以得到环路复杂度为1。
③列出独立路径:
1. 开始 -> i=1; n1=n2=0; sum=0; -> while循环
2. while循环 -> score[i]!=-1 && n2<50 -> if语句
3. if语句 -> score[i]>0 && score[i]<100 -> n1=n1+1; sum=sum+score[i];
4. if语句 -> 结束while循环
5. 结束while循环 -> n1>0 -> 计算average
6. 结束while循环 -> n1<=0 -> average=-1
7. 打印输出结果
④设计测试用例:
1. score数组中只有一个-1元素,期望输出结果为n1=0,总和=0,平均值=-1。
2. score数组中只有一个小于0的数,期望输出结果为n1=0,总和=0,平均值=-1。
3. score数组中只有一个大于等于100的数,期望输出结果为n1=0,总和=0,平均值=-1。
4. score数组中只有一个有效数,期望输出结果为n1=1,总和=有效数,平均值=有效数。
5. score数组中有多个有效数,期望输出结果为n1=有效数个数,总和=有效数之和,平均值=有效数之和/n1。
相关问题
2.测试如下程序段:\nmain()\n{ int i=1;n1=n2=0;\nfloat sum=0;float average;float score[100];\nwhile(score[i]!=-1&
这是一段C语言程序代码,目的是计算输入的成绩的平均值。其中,score数组存储输入的成绩,-1表示输入结束。代码中先将n1和n2赋值为0,接着使用while循环遍历score数组,计算成绩总和并统计成绩个数,最后求出平均值。
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); } 要求:①画出这段代码的程序流程图和控制流程图;②计算环路复杂度;③列出独立路径;④设计测试用例。
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为所有正整数的平均值。