2.5多重else嵌套的二次方程求根
#include<stdio.h>
#include<math.h>
int main()
{
double a, b, c, disc, x1, x2, realpart, imagpart;
scanf("%lf,%lf,%lf", &a, &b, &c); printf("The equation");
if(fabs(a) <= 1e-){ //fabs是求绝对值,判断a是否小于0来判断是否是一个二次方程。
printf("is not a quadratic\n");
}else{ //否则(不小于0),则是二次方程,可以一般公式求解。
disc = b * b - * a * c; //disc 代表 b方-4ac,减少重复运算。
if(fabs(disc) <= 1e-){ //内嵌的if,上一次逻辑下,判断delta是否为0
printf("has two equal roots:%8.4f\n", -b/(*a));//判断成立,输出2根相等。
}else if(disc > 1e-){ //delta大于0,有2个实根。
x1 = (-b + sqrt(disc)) /( * a);
x2 = (-b - sqrt(disc)) /( * a);
printf("has distinct real roots:%8.4f and %8.4f\n", x1, x2);
}else{ //否则,delta小于0,有2个复根
realpart = -b /( * a);
imagpart = sqrt(-disc)/( * a);
printf("has complex roots:\n");
printf("%8.4f+%8.4fi\n", realpart, imagpart);
printf("%8.4f-%8.4fi\n", realpart, imagpart);
}
}
return ;
}
注意:
由于disc是实数,而实数在计算和存储时会有一些微笑的误差,因此不能直接进行如下判断:“if(disc == 0)”因为这样可能会出现本来是0的量,由于上述误差而被判别为不等于0而导致结果错误。所以采取 的方法是判别disc的绝对值fabs(disc)是否小于一个很小的数(1e-6),如果小于此数,就认为disc == 0.
2.5多重else嵌套的二次方程求根的更多相关文章
- [算法笔记-题解]问题 A: 例题4-1 一元二次方程求根
问题 A: 例题4-1 一元二次方程求根 [命题人 : 外部导入] 时间限制 : 1.000 sec 内存限制 : 12 MB 题目描述 求一元二次方程ax2+bx+c=0的根,三个系数a, b, c ...
- if 一元二次方程求根
if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码 if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码 if...else if... ...
- 学习笔记之09小练习题(js:从小到大输出三个任意数,查成绩,相亲题,查体重,一元二次方程求根)
<script type="text/javascript"> /*第一题.输入三个整数,x,y,z,最终以从小到大的方式输出. 注意小点:1 字符串的拼接是用+,数学 ...
- Vue.js多重组件嵌套
Vue.js多重组件嵌套 Vue.js中提供了非常棒的组件化思想,组件提高了代码的复用性.今天我们来实现一个形如 <app> <app-header></app-head ...
- 方程ax2+bx+c=0;一元二次方程。求根
<body>方程ax2+bx+c=0;一元二次方程.求根请输入a:<input type="number" id="a"/><br ...
- OpenJudge计算概论-求一元二次方程的根【含复数根的计算、浮点数与0的大小比较】
/*====================================================================== 求一元二次方程的根 总时间限制: 1000ms 内存限 ...
- 计算概论(A)/基础编程练习1(8题)/4:求一元二次方程的根
#include<stdio.h> #include<math.h> int main() { // 待解方程数目 int n; scanf("%d", & ...
- C语言-郝斌笔记-001求二次方程的根
求二次方程的根 #include <stdio.h > #include<math.h> int main(void) { //把三个系数保存到计算机中 ; //=不表示相等, ...
- js条件语句,用if...else if....else方程ax2+bx+c=0一元二次方程。求根
if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码 if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码 if...else if... ...
随机推荐
- C# 模板列在绑定的时候取文本值
查了很多资料,都说模板列无法取文本值, 需要使用FindControl, 对于列数很多的情况就要命了, 使用以下方式, 可以循环列的索引,获取到文本值 前台 <asp:TemplateField ...
- LAMP坏境和LNMP环境安装Nagios4.1.1和基本配置
----------------------------------------以下内容为笔者生产环境的监控,安装都是经过一步步测试的-------------------------------- ...
- 前端HTML之页面结构
前端工作一年了,期间由于工作需要,也做了一些产品的设计,因为自己的目标就是做编程,所以婉拒了与产品相关的一些任务,打算主要把精力放到编程这方面. PS:2015年1月进军编程行业. 废话不多讲,这一年 ...
- java简单模拟生产者消费者问题
本文来自:http://www.cnblogs.com/happyPawpaw/archive/2013/01/18/2865957.html 引言 生产者和消费者问题是线程模型中的经典问题:生产者和 ...
- User mode Linux
一.简介 用户模式Linux(User ModeLinux,UML)不同于其他Linux虚拟化项目,UML尽量将它自己作为一个普通的程序.从Linux2.6.9版本起,用户模式Linux(User m ...
- MyBatis源码分析-IDEA新建MyBatis源码工程
MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生Map使用简 ...
- transient关键字的作用
代码如下: import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutpu ...
- cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'mvc:annotation-driven'.
spring 配置文件报错报错信息:cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be ...
- [No000093]按住Alt 再按数字键敲出任意汉字和字符!
1.在notepad里,(中文系统下) 按住Alt 然后按52946最后放开Alt 按住Alt 然后按45230最后放开Alt 按住Alt 然后按50403最后放开Alt 你会看到"我爱你& ...
- anaconda
python 集成环境 anaconda的使用 https://www.zhihu.com/question/35757251