大家好我几周前就开始学习C了,我正在尝试制作我的第一个有用的程序,我正在尝试创建一个平方方程式计算器,但无论我输入什么,它总是输出"没有解决方案2& #34;任何人都可以看看并帮助我吗? 输入示例: 0 0 0 = 1 4 1 =
#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;
}
答案 0 :(得分:0)
对于scanf中的双重使用说明符%l(ell)f
而非%1(one)f
。
请注意,这是printf
格式字符串与scanf
(和fscanf等)格式字符串大不相同的地方。对于输出,您将传递一个值,当作为可变参数传递时,该值将从float
提升为double
。对于输入,您传递了pointer
,但未提升,因此您必须告诉scanf
您是否要阅读float
或double
,< strong>因此对于scanf
,%f
表示您想要阅读float
而%lf
表示您想要阅读double
。