平方公式计算器不在C中工作

时间:2016-11-11 11:46:13

标签: c

大家好我几周前就开始学习C了,我正在尝试制作我的第一个有用的程序,我正在尝试创建一个平方方程式计算器,但无论我输入什么,它总是输出"没有解决方案2& #34;任何人都可以看看并帮助我吗? 输入示例:  0 0 0 = enter image description here  1 4 1 = enter image description here

#include <stdio.h>
#include <math.h>
int main()
{
    printf("enter a\n");
    double a; scanf("%1f", &a);
    printf("\nenter b\n");
    double b; scanf("%1f", &b);
    printf("\nenter c\n");
    double c; scanf("%1f", &c);
    if (a==0)
    {
        if (b==0)
        {
            if (c==0)
                printf("x can be every number\n");
            else
                printf("no solution1\n");
        }
        else
        {
            printf("x equals %.2f\n", ((-1)*c) / b);
        }
    }
    else
    {
        double delta = (b*b)-(4*(a*c));
        if (delta>0)
        {
            double sqrtDlt = sqrt(delta);
            printf("x1 = %4.2f\n", (((-1)*b) + sqrtDlt) / 2 * a);
            printf("x2 = %4.2f\n", (((-1)*b) - sqrtDlt) / 2 * a);
        }
        else
            printf("no solution2\n");
    }

    return 0;
}

1 个答案:

答案 0 :(得分:0)

对于scanf中的双重使用说明符%l(ell)f而非%1(one)f

请注意,这是printf格式字符串与scanf(和fscanf等)格式字符串大不相同的地方。对于输出,您将传递一个值,当作为可变参数传递时,该值将从float提升为double。对于输入,您传递了pointer,但未提升,因此您必须告诉scanf您是否要阅读floatdouble,< strong>因此对于scanf%f表示您想要阅读float%lf表示您想要阅读double