7-54 求方程的解 (10 分)

求ax2+bx+c=0方程的实根。a,b,c由键盘输入. 解方程要考虑系数a等于零的情况。a等于零有两种情况(b==0,b!=0),a不等于零有三种情况(delta>0、==0、<0),先计算得到根x1、x2,再输出

输入格式:

输入三个数a,b,c。

输出格式:

输出方程的实根(保留两位小数),如果方程有1个实根,则输出根;如果方程有2个不等实根,则一起输出(使用空格分开),先输出较大根,后输出较小根。 其余情况(如无实根等)则输出No。

输入样例:

1 -3 2

输出样例:

2.00 1.00
import math
a,b,c=map(int,input().split())#求ax2+bx+c=0方程的实根。a,b,c由键盘输入.

d = (b**2)-(4*a*c)

if a == 0:#解方程要考虑系数a等于零的情况
    if b!=0:
        print(‘{:.2f}‘.format(-(c/b)))
    elif b==0:
        print(‘No‘)

elif a != 0:
    if d>0:
        x1=((-b+math.sqrt(d))/(2*a))
        x2=((-b-math.sqrt(d))/(2*a))
        if x1>x2:
            print(‘%.2f‘%(x1),end=‘ ‘)
            print(‘%.2f‘%(x2))
        elif x1<x2:
            print(‘%.2f‘%(x2),end=‘ ‘)
            print(‘%.2f‘%(x1))
    elif d==0:
        print(‘{:.2f}‘.format((-b-math.sqrt(b**2-4*a*c))/(2*a)))
    elif d<0 :
        print(‘No‘)

  

原文地址:https://www.cnblogs.com/aimilu/p/11819196.html

时间: 2024-10-31 09:52:04

7-54 求方程的解 (10 分)的相关文章

6-3 递归求Fabonacci数列 (10 分)

6-3 递归求Fabonacci数列 (10 分) 本题要求实现求Fabonacci数列项的函数.Fabonacci数列的定义如下: f(n)=f(n?2)+f(n?1) (n≥2),其中f(0)=0,f(1)=1. 函数接口定义: int f( int n ); 函数f应返回第n个Fabonacci数.题目保证输入输出在长整型范围内.建议用递归实现. 裁判测试程序样例: #include <stdio.h> int f( int n ); int main() { int n; scanf(

牛顿迭代法求方程的解

迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题.迭代法又分为精确迭代和近似迭代."二分法"和"牛顿迭代法"属于近似迭代法.迭代算法是用计算机解决问题的一种基本方法. 利用迭代算法解决问题,需要以下三个步骤: 1.确定迭代变量 在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量. 2.建立迭代关系式 所谓迭代关系式,指如何从变量的前一个值推出其下

Problem J: 求方程的解——C语言初学者百题大战之十五

#include<stdio.h> #include<math.h> int main() { float a,b,c,x1,x2,delta; scanf("%f %f %f",&a,&b,&c); delta=b*b-4*a*c; if(a==0){ if(b==0) printf("No\n"); else printf("%f\n",(-c)/b); } if(a!=0){ if(delta

36.求方程的解——C语言初学者百题大战之十五

#include<stdio.h> #include<math.h> int main() { float a,b,c,x1,x2,delta; scanf("%f %f %f",&a,&b,&c); delta=b*b-4*a*c; if(a==0){ if(b==0) printf("No\n"); else printf("%f\n",(-c)/b); } else{ if(delta>

用c语言求ax^2+bx+c=0方程的解

用c语言求ax^2+bx+c=0方程的解.#include <stdio.h>#include <math.h>#define m 0.000001int main(){     float a,b,c,x,x2,n,q,p;     scanf ("%f%f%f",&a,&b,&c);     n=b*b-4*a*c;     if ((a<m)&&(a>-m))     {         x=(-c)/b

用二分法求下面方程在(-10,10)之间的根。【谭浩强第四版课后习题】

用二分法求下面方程在(-10,10)之间的根:2x3-4x2+3x-6=0 编程思路:仿照二分查找,将区间划分为两部分,记录区间左右端点,得到中点.每次运算将中点带入方程: 结果>0:根应该向小一点的值拟合,high=mid; 结果<0:根应该向大一点的值拟合,low=mid; 对于跳出循环的条件,我首先是认为low和high应该无限逼近:while(fabs(low-high)>1e-5),当循环体内结果=0后,便使用break跳出循环:if(temp==0) break;但是没有得到

牛顿迭代法 求方程根

牛顿迭代法 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法.多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要. 方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根.牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根.复根,此时线性

利用MATLAB求方程y1=3x1+x2+x3,y2=3x1-x2-x3在x1=-2,x2=3,x3=1时的值

求方程y1=3x1+x2+x3,y2=3x1-x2-x3在x1=-2,x2=3,x3=1时的值. 解:打开MATLAB输入如下指令: x1=-2;x2=3;x3=1; >> y1=3*x1+x2+x3 y1 = -2 >> y2=3*x1-x2-x3 y2 = -10

弦截法求方程根

THE SECANT METHOD In numerical analysis, the secant method is a root-finding algorithm that uses a succession of roots of secant lines to better approximate a root of a function f. The secant method can be thought of as a finite difference approximat