PTA 基础编程题目集 7-18 二分法求多项式单根 C语言

二分法求函数根的原理为:如果连续函数f(x)在区间[a,b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f®=0。

二分法的步骤为:

检查区间长度,如果小于给定阈值,则停止,输出区间中点(a+b)/2;否则
如果f(a)f(b)<0,则计算中点的值f((a+b)/2);
如果f((a+b)/2)正好为0,则(a+b)/2就是要求的根;否则
如果f((a+b)/2)与f(a)同号,则说明根在区间[(a+b)/2,b],令a=(a+b)/2,重复循环;
如果f((a+b)/2)与f(b)同号,则说明根在区间[a,(a+b)/2],令b=(a+b)/2,重复循环。
本题目要求编写程序,计算给定3阶多项式

​​ 在给定区间[a,b]内的根。

输入样例:
3 -1 -3 1
-0.5 0.5
输出样例:
0.33

#include<stdio.h>double a3, a2, a1, a0;
double a, b;double f(double x) {return a3*x*x*x + a2*x*x + a1*x + a0;
}int main() {   scanf("%lf%lf%lf%lf",&a3,&a2,&a1,&a0);scanf("%lf%lf", &a, &b);while (b-a>0.001) {//为了通过测试点中点的f值很小但不一定是根if (f(a)*f(b)<0) {if (f((a + b) / 2)==0) {break;}if (f((a + b) / 2)*f(a)>0) {a = (a + b) / 2;}if (f((a + b) / 2)*f(b)>0) {b = (a + b) / 2;}}if (f(b) == 0 || f(a) == 0) {printf("%.2lf\n", f(a) == 0 ? a : b);return 0;}}printf("%.2lf\n", (a + b) / 2);return 0;}

PTA 基础编程题目集 7-18 二分法求多项式单根 C语言相关推荐

  1. PTA 基础编程题目集 7-12 两个数的简单计算器 C语言

    PTA 基础编程题目集 7-12 两个数的简单计算器 C语言 本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加.减.乘.除或求余运算.题目保证输入和输出均不超过整型范围. 输入格式 ...

  2. PTA 基础编程题目集 7-6 混合类型数据格式化输入 C语言

    PTA 基础编程题目集 7-6 混合类型数据格式化输入 C语言 本题要求编写程序,顺序读入浮点数1.整数.字符.浮点数2,再按照字符.整数.浮点数1.浮点数2的顺序输出. 输入格式: 输入在一行中顺序 ...

  3. c语言在单行文本上删除子串,一道比较简单的题——PTA基础编程题目集 7-29 删除字符串中的子串 C语言试解-Go语言中文社区...

    首先看题目 输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2. 输入格式: 输入在2行中分别给出不超过80个字符长度的.以回车结束的2个非空字符串,对应S1 ...

  4. PTA 基础编程题目集 6-6 求单链表结点的阶乘和

    PTA 基础编程题目集 6-6 求单链表结点的阶乘和 本题要求实现一个函数,求单链表L结点的阶乘和.这里默认所有结点的值非负,且题目保证结果在int范围内. 函数接口定义: int Factorial ...

  5. PTA 基础编程题目集 7-27 冒泡法排序 C语言

    PTA 基础编程题目集 7-27 冒泡法排序 C语言 将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们.通过一遍扫描,则最后一 ...

  6. PTA 基础编程题目集 7-33 有理数加法 C语言

    PTA 基础编程题目集 7-33 有理数加法 C语言 本题要求编写程序,计算两个有理数的和. 输入格式: 输入在一行中按照a1/b1 a2/b2的格式给出两个分数形式的有理数,其中分子和分母全是整形范 ...

  7. PTA 基础编程题目集 7-24 约分最简分式 C语言

    PTA 基础编程题目集 7-24 约分最简分式 C语言 分数可以表示为分子/分母的形式.编写一个程序,要求用户输入一个分数,然后将其约分为最简分式.最简分式是指分子和分母不具有可以约分的成分了.如6/ ...

  8. PTA 基础编程题目集 7-7 12-24小时制 C语言

    PTA 基础编程题目集 7-7 12-24小时制 C语言 编写一个程序,要求用户输入24小时制的时间,然后显示12小时制的时间. 输入格式: 输入在一行中给出带有中间的:符号(半角的冒号)的24小时制 ...

  9. PTA 基础编程题目集 7-22 龟兔赛跑 C语言

    PTA 基础编程题目集 7-22 龟兔赛跑 C语言 乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息.乌龟每分钟可以前进3米,兔子每分钟前进9米:兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于 ...

最新文章

  1. sendStickyBroadcast和sendStickyOrderedBroadcast
  2. Oracle VM VirtualBox启动新建虚拟机弹错--不能为虚拟机xxxx电脑 打开一个新任务 解决方法;
  3. 转:C#使用Log4Net记录日志
  4. 从STL中查找、统计和过滤重复(相同)的数据
  5. Java基本语法(9)--逻辑运算符(逻辑短路)与或非
  6. 7-72 功夫传人 (25 分)(深搜)
  7. js 比较时分大小_JS 判断两个时间的大小(可自由选择精确度:天,小时,分钟,秒)...
  8. SPSS 17.0中文版常用功能与应用实例精讲
  9. access无法 dolby_Win10专业版装不了dolby该怎么办?Win10 dolby音效驱动安装教程
  10. 国内从事CV相关的企业
  11. android有道翻译api,有道智云自然翻译服务API
  12. 易飞计件工资的设计及应用
  13. 制度罚则-- 线下Bug规范
  14. 电脑任务栏应用图标变成白色怎么恢复
  15. 彻底理解js的作用域链
  16. 基础正则表达式及常用正则表达式
  17. 4g 控矿驱动 迪兰rx574_主流显卡之争 574/1065战怪猎:世界
  18. 当代计算机的应用,浅析计算机在当今社会中的应用
  19. 物理五大信道浅聊PRACH、PUCCH、PUSCH、PDCCH、PDSCH
  20. hrbust 2343 巴啦啦能量

热门文章

  1. SMRT single molecular real time Sequencing
  2. 结构体struct 联合体 union
  3. 三代测序关键计算技术开发及应用
  4. java 两个值对换_java将两个整型变量值进行互换的几种实现方法
  5. android中websockt断开链接,接吻SDK - 的WebSocket在断开的Android
  6. element ui input 无法输入的解决办法
  7. 大角度人脸转正--Towards Large-Pose Face Frontalization in the Wild
  8. linux怎么进入root文件,linux下安装ROOT过程
  9. [k8s] 第二章 十分钟带你搭建k8s集群环境
  10. 安装计算机过程中的注意事项,西门子step7安装过程中的注意事项