c - 简化复杂的根

标签 c

我编写了一个程序来计算方程的根,但它没有简化根。任何人都可以帮助我简化它们

#include<stdio.h>
#include<conio.h>
#include<math.h>
void main(void)
{
    int a,b,c;
    float d,d2;
    printf(" Enter a,b and c:");
    scanf("%d %d %d",&a,&b,&c);
    d=b*b-4*a*c;

    if(d<0)
    {
        printf("(%d+i%d)/%d\n",-b,sqrt(-d),2*a) ;
        printf("(%d-i%d)/%d\n",-b,sqrt(-d),2*a);
    }
    else
    {
        printf("(%d+%d)/%d\n",-b,sqrt(d),2*a);
        printf("(%d-%d)/%d\n",-b,sqrt(d),2*a);
    }

getch();
}

最佳答案

您无法计算负数的平方根。 d是负数,并且您正在尝试找到它的平方根。复数解的整点和虚数单位i就是写-1i^2 ,然后当 d < 0你有:

sqrt(d) = sqrt(i^2 * (-d)) = i*sqrt(-d)

所以改成这样:

if(d<0)
{
    printf("(%d+i%lf)/%d",-b,sqrt(-d),2*a);
    printf("(%d-i%lf)/%d",-b,sqrt(-d),2*a);
}

我不知道为什么你的 printf 两边有括号争论,我删除了那些。

第二个%d也应更改为 %lfsqrt返回一个 double 值。

关于c - 简化复杂的根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3211666/

相关文章:

c - 返回VLA和使用情况

c - C语言如何在不声明全局变量的情况下在两个函数之间共享变量

C: recv() 偶尔会返回非常大的数

c++ - 管道损坏,FIFO 文件

c - SIGINT 和 SIGQUIT

c 创建一个程序,计算句子中有多少个单词,并将句子中的所有字母大写。

c - 可以为 name 和 argv 字段进行 malloc 的空闲内存

c# - 在 C# 中使用 C++ DLL

c - 为什么这不会打印?

c - 如何使用C将元素压入堆栈