前言:在网上看到不少解一元二次方程的小程序,在使用时总得出一大堆小数,感觉很不爽,遂自己重新写了一遍。

首先,先回忆一下一元二次方程的求根公式:

  1. 分别读取二次项、一次项和常数项系数并且求出delta

  1. 无解情况

此时同时输出delta的值,小于0,无解。

2.只有一个根的情况

当delta等于0,只有一个实数根,没什么好讲。

3.两个不相等实根的情况

重点就是这个部分。

  1. 为了避免一大堆小数的问题,分开sqrt(delta)是整数和非整数来。(如果是整数,则直接运算,如果不是整数,则保留根号)

    (1)sqrt(delta)是整数时

现在涉及一个问题就是如何判断整数

此处为了避免互相干扰,用了两个变量,sqr用于判断是否为整数,如果是整数,则用sqr1计算

如何判断是否为整数呢?这里可以利用int形和double形的性质。采用判断(int)sqr和 (int)(sqr + 0.9999999)的大小来判断sqr是不是整数。[double形一般精确到小数点后6 位,所以这里用了7个9]。然后强制转换成int型,如果为整数,(int)(sqr + 0.9999999)不会进位,x=y。不是整数,反之。

然后如果为整数,先计算sqrt(delta)后代入计算。

(2)sqrt(delta)不是整数时

对,保留根号!

后记:写这一段小程序最初是为繁多的坑爹的解方程数学题所恼,想快点完成作业~~于是在那个月黑风高的晚上写完作业后顺便把这篇文章写了。

C语言写解一元二次方程程序心得的更多相关文章

  1. c语言解一元二次方程

    C语言解一元二次方程,输入系数a,b,c; #include <stdio.h> #include <math.h> int main(int argc, char *argv ...

  2. java练习题:解一元二次方程、判断闰年、判断标准身材、三个数取最大值

    1.解一元二次方程 注:求根公式为(-b+根号德尔塔)/2a,(-b-根号德尔塔)/2a Scanner sc=new Scanner(System.in); System.out.println(& ...

  3. 【Java例题】2.8 解一元二次方程

    8.解一元二次方程. 输入一元二次方程的a,b,c三个系数,解一元二次方程 ax^2+bx+c=0,输出两个根 package study; import java.util.Scanner; pub ...

  4. C语言碰到的一元二次方程

    最近开始在学习C语言,看视频,是http://www.rjzxw.com/jc-74-1.html 碰到老师讲的一元二次方程例子,不懂,所以找了下资料,看了网上一元二次方程的视频(是自己太浮躁了,听不 ...

  5. 用c++解一元二次方程

    解方程 github项目地址 这两天得知初二的表妹学了一元二次方程,听说还不会解,我就想着试试用C语言编写解方程. 一元二次方程 用公式法 这种方法效果很好: #include"funct. ...

  6. C语言写的流氓关机程序及破解

    记得大二刚开始接触电脑的那个时候,偶尔会弹出一个强制关机的窗口,当时没有办法,如下: 现在看来只是一个小程序而已,用C语言编写的: #include<windows.h> int main ...

  7. if语句解一元二次方程~

    #include<stdio.h>#include<math.h> void main(){  double a,b,c,x1,x2;  printf("请输入a&q ...

  8. C语言简单计算一元二次方程

    #include <stdio.h> #include <math.h> /*计算一元二次方程的根*/ void Cal(double a,double b,double c) ...

  9. 解一元二次方程的C++实现

    一元二次方程的根的情况分为实根与虚根两种,代码如下 #include<iostream> #include<cmath> using namespace std; float ...

随机推荐

  1. optimize table-2

    今天在看CU的时候,发现有人问有关optimize来表优化的问题,当年因为这个问题,困扰我很长一段时间,今天有空我把这个问题,用实际数据来展示出来,让大家可以亲眼来看看,optimize table的 ...

  2. 进程控制之vfork函数

    vfork函数的调用序列和返回值与fork相同,但两者的语义不同. vfork用于创建一个新进程,而新进程的目的是exec一个新程序.vfork和fork一样都创建一个子进程,但是它并不将父进程的地址 ...

  3. iOS开发经验总结(下)

    四十.AFNetworking 传送 form-data 将JSON的数据,转化为NSData, 放入Request的body中. 发送到服务器就是form-data格式. 四十一.非空判断注意 BO ...

  4. 字符的截取方法使用的是Substring 和三目运算符

    substring(0,m.title.length>11?11:m.title.length)

  5. 深入理解计算机系统第二版习题解答CSAPP 2.1

    A.将0x39A7F8转换为二进制. 0011 1001  1010 0111  1111 1000 B.将二进制1100 1001 0111 1011转换为十六进制. 0xC97B C.将0xD5E ...

  6. ThinkPHP函数详解:A方法

    A方法用于在内部实例化控制器,调用格式:A('[项目://][分组/]模块','控制器层名称')最简单的用法: $User = A('User'); 复制代码 表示实例化当前项目的UserAction ...

  7. C# 自定义排序

    /// <summary> /// 实体 /// </summary> public class Product { public int ID { get; set; } p ...

  8. 归并排序算法(C#实现)

    归并排序(Merge Sort)是利用"归并"技术来进行排序.归并是指将若干个已排序的子文件合并成一个有序的文件.归并排序有两种方式:1): 自底向上的方法 2):自顶向下的方法 ...

  9. C++实现RTMP协议发送H.264编码及AAC编码的音视频

    http://www.cnblogs.com/haibindev/archive/2011/12/29/2305712.html C++实现RTMP协议发送H.264编码及AAC编码的音视频 RTMP ...

  10. 时间处理总结(一).net

    不断整理中... 获取当前时间DateTime.Now.ToString("d") ;//获取到的日期格式为eg :2013/11/14 时间格式只取年月日DateTime.Now ...