问答题 针对以下C语言程序,请按要求回答问题
  以下是一个用来求解一元二次方程的C语言程序:
   1 main()
   2 {
   3 float a,b,c,x1,x2,delta;
   4 scanf("%f%f%f",&a, &b, &c);
   5 if (a!=0)
   6 {
   7 delta=b*b-4*a*c;
   8 if (delta>0)
   9 {
   10 x1=(-b+sqrt(delta))/(2*a);
   11 x2=(-b-sqrt(delta))/(2*a);
   12 printf("x1=%f,x2=%f/n",x1,x2);
   13 }
   14 else
   15 {
   16 if (delta==0)
   17 {
   18 x1=-b/(2*a);
   19 printf("x1=%f/n",x1);
   20 }
   21 else
   22 {
   23 printf("no real solution/n");
   24 }
   25 }
   26 }
   27 }
  
问答题 画出main()函数的控制流图。
【正确答案】根据程序的源代码,容易画出对应的控制流图,如图所示:   (其中圈中的数字代表的是语句的行号)    [*]
【答案解析】
问答题 采用基本路径测试法设计一组测试用例,保证,每个基本独立路径都至少执行一次。
【正确答案】第一步,根据上述控制流图计算该程序的环路复杂性。   由图可以看出,判定节点数为3,边数为9,节点总数为7,故   V(G)=9-7+2=4   或V(G)=3+1=4   或V(G)=4(上图的区域数)   第二步,根据环路复杂度为4,可确定4条基本独立路径。   Path1:5-27   Path2:5-8-26-27   Path3:5-8-16-18-26-27   Path4:5-8-16-23-26-27   第三步,设计测试用例   根据上面4条基本独立路径,可以设计测试用例如下:   测试用例1:   输入数据:a=0, b=1, c=1   预期输出结果:程序结束(这时方程不是二元一次方程)   测试用例2:   输入数据:a=1, b=3, c=2   预期输出结果:x1=-1, x2=-2   测试用例3:   输入数据:a=1, b=-2, c=1   预期输出结果:x1=1   测试用例4:   输入数据:a=1, b=1, c=1   预期输出结果:no real solution
【答案解析】[解析] 首先根据程序的源代码,画出控制流图。然后通过控制流图可以计算出该程序的复杂度,找出所有的独立路径,根据基本路径测试法设计测试用例。