回 帖 发 新 帖 刷新版面

主题:[讨论]烦请高手给点意见

#include <stdio.h>
#include<math.h>
float x1, x2, disc, p, q;
void root-1(float a, float b, float c)
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("%f%f", x1,x2);
}
void root-2(float a, float b, float c)
{
p=-b?(2*a);
q=sqrt(disc)/(2*a);
printf("%f+%fi,%f-%fi",p+q, p-q);
}
void root-3(float a, float b, float c)
{
x1=-b/(2*a);
x2=-b/(2*a);
printf("%f,%f", x1,x2);
}
void main()
{
float a, b, c;
scanf("%f%f%f", &a,&b,&c);
disc=b*b-4*a*c;
if(disc>0)
root-1(a,b,c); 
else if(disc<0)
root-2(a,b,c);
else
root-3(a,b,c);
}

回复列表 (共2个回复)

沙发

编译出现错误,计算机-当成减号,不是你想想像的小短横,建议改成下划线或者去掉。
root_2中错误最多
p=-b?(2*a);     p=-b/(2*a);
q=sqrt(disc)/(2*a);  disc<0的   q=sqrt(-disc)/(2*a);
printf("%f+%fi,%f-%fi",p+q, p-q);   应该输出4个值依次p,q,p,q而你的只p+q,p-q两个值
printf("%f+%fi,%f-%fi",p,q,p,q); 

最后scanf("%f%f%f", &a,&b,&c);最好改成scanf("%f,%f,%f", &a,&b,&c);  

#include <stdio.h>
#include<math.h>
float x1, x2, disc, p, q;

void root_1(float a, float b, float c)
{
    x1=(-b+sqrt(disc))/(2*a);
    x2=(-b-sqrt(disc))/(2*a);
    printf("%f,%f", x1,x2);
}

void root_2(float a, float b, float c)
{
    p=-b/(2*a);
    q=sqrt(-disc)/(2*a);
    printf("%f+%fi,%f-%fi",p,q,p,q);
}

void root_3(float a, float b, float c)
{
    x1=-b/(2*a);
    x2=-b/(2*a);
    printf("%f,%f", x1,x2);
}

void main()
{
    float a, b, c;
    for(;;)
    {
        scanf("%f,%f,%f", &a,&b,&c);
        disc=b*b-4*a*c;
        if(disc>0)
        root_1(a,b,c); 
        else 
            if(disc<0)
                root_2(a,b,c);
            else
                root_3(a,b,c);
    }
}

加个死循环可以进行多次计算。
你的程序中有太多的重复运算。

本人学业不精,不敢称高手,请多指教。

板凳

错了,没重复。一次就计算一次,和我的一样。

我来回复

您尚未登录,请登录后再回复。点此登录或注册