DOTCPP:问题1028心得

41 篇文章 3 订阅
37 篇文章 3 订阅

题目描述

求方程 的根,用三个函数分别求当b^2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。
输入a b c
输出x1=? x2=?

基本思路

  • 当b^2-4ac大于0时,方程存在两个实数根,令delta=b*b-4ac,则delta有两个实数平方根
  • 当b^2-4ac等于0时,方程存在两个相等的实数根,即(-b)/(2a)
  • 当b^2-4ac小于0时,方程不存在实数根,但是仍有两个根,此时的根形式为x11+x12i,x21+x22i的形式,且x11=x21,x12=-x22
    题目本身不难,主要是要考虑怎么写成函数,怎么传参(我参考过网上把一些变量设为全局变量,函数不传参的做法,但是最终还是决定写传参的函数)

代码

#include<stdio.h>
#include<math.h>

void root1(double a, double b, double delta);
void root2(double a, double b);
void root3(double a, double b, double delta);

int main()
{
 double a, b, c;
 scanf("%lf %lf %lf", &a, &b, &c);
 double delta = b * b - 4 * a *c;
 if(delta > 0)
 {
  root1(a, b, delta);
 }
 else if(delta == 0.0)
 {
  root2(a, b);
 }
 else if(delta < 0)
 {
  root3(a, b, delta);
 }
 return 0; 
} 

void root1(double a, double b, double delta)
{
 double x1, x2;
 x1 = (-b + sqrt(delta)) / (2 * a);
 x2 = (-b - sqrt(delta)) / (2 * a);
}

void root2(double a, double b)
{
 double x1, x2;
 x1 = (-b) / (2 * a);
 x2 = (-b) / (2 * a);
 printf("x1=%.3lf x2=%.3lf", x1, x2);
}

void root3(double a, double b, double delta)
{
 double x11, x12, x21, x22; 
 x11 = (-b) / (2 * a);
 x12 = sqrt(- delta) / (2 * a);
 x21 = x11;
 x22 = x12;
 printf("x1=%.3lf+%.3lfi x2=%.3lf-%.3lfi", x11, x12, x21, x22);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值