一、实验目的
通过针对选择性问题求解的程序填空,认识选择结构的程序流程框架,理解选择结构流程控制语句的正确应用以及条件的正确表示;同时进一步熟悉输出格式的设计实现,熟练掌握程序的调试与运行。
二、实验内容
1、在实验一中对一元二次方程ax2+bx+c=0的求解只考虑了b2-4ac〉0的情况。如果考虑a、b、c取值分别如下表,求一元二次方程ax2+bx+2=0的根提示:若b2-4ac>0,方程有两个不同的实根;
输入 | 期待的输出 | 说明 | |||
a | b | c | x1 | x2 | |
3 | 5 | 2 | x1= | x2= | b*b-4ac>0 |
2 | 4 | 2 | x1=x2=-1.000000 | b*b-4ac=0 | |
3 | 4 | 2 | x1=-0.666667+0.471405i | x2=-0.666667-0.471405i | b*b-4ac<0 |
3 | 0 | 2 | x1= | x2= | b=0 |
0 | 4 | 2 | x1=-0.500000 | a=0 | |
0 | 0 | 2 | Input error! | a=0,b=0 |
若b*b-4ac<0,方程有两个复根,其实部和虚部分开计算;
若b*b-4ac=0,方程有两个相等的实根;
请分别考虑:a=0、b=0和a、b均为0时的情况。
---------------------------------C语言程序---------------------------------
#include "stdio.h"
#include "math.h"
int main(void)
{
int a,b,c;
double d,e,f;
scanf("%d %d %d",&a,&b,&c);
d=a, e=b, f=c;
if(a==0);
if(b==0);
【1】;
【2】;
else
if(【3】)
printf("x1=x2=%.6f\n",0-e/(2*d));
else
if (b*b-4*a*c>0)
printf("x1=%.6f\nx2=%.6f\n",(-e+sqrt(e*e-4*d*f))/(2*d),(-e-sqrt(e*e-4*d*f))/(2*d));
else
【4】;
【5】;
【6】;
printf("x1=%.6f+%.6fi\nx2=%.6f+%.6fi\n",-e/(2*d),sqrt(4*d*f-e*e)/(2*d),-e/(2*d),-sqrt(4*d*f-e*e)/(2*d));
}
------------------------------------------------------------------------------
请按照表格中“期待的输出”要求,将程序空缺的【1】、【2】、【3】、【4】、【5】、【6】语句补充完整,并调试运行,针对每一组输入,将对应的输出填写在表中。
2、完成本次网络教室布置的编程练习题。
三、实验方法
1、针对问题画出流程图;
2、按照流程图和输出要求,将将程序补充完整,并按照所给的6组输入数据进行调试运行,对照表格中的输出要求检查程序,使之完全符合输出格式要求。
四、实验报告
将完成的表复制下来,在网络教室提交。
序号 | C语句 |
【1】 | |
【2】 | |
【3】 | |
【4】 | |
【5】 | |
【6】 |