c语言算一元二次方程的解出错

#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,disc,x1,x2,p,q;
scanf("%1f%1f%1f",&a,&b,&c);
disc=b*b-4*a*c;
p=sqrt(disc)/(2.0*a);
q=-b/(2.0*a);
x1=q-p;
x2=q+p;
printf("x1=%7.1f\nx2=%7.1f\n",x1,x2);
return 0;
}
运行后它得不到正确答案请问有什么问题啊
已经知道disc大于零

#include<stdio.h>
#include<math.h>
int main()
{
    double a,b,c,disc,x1,x2,p,q;
    scanf("%lf%lf%lf",&a,&b,&c); //这里是小写字母l,不是数字1
    disc=b*b-4*a*c;
    p=sqrt(disc)/(2.0*a);
    q=-b/(2.0*a);
    x1=q-p;
    x2=q+p;
    printf("x1=%7.1f\nx2=%7.1f\n",x1,x2);
    return 0;
}

追问

还真是喔我说怎么照着书上都出问题,它那个l有什么用啊

追答

这是double 类型的格式 %lf

float 的格式就是 %f

追问

那我直接用%f可不可以啊!

追答

你把double类型全改float 就可以了

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-05-13

读取一个double应该使用 %lf 而不是 %1f

scanf("%1f%1f%1f", &a, &b, &c);


改为

scanf("%lf%lf%lf", &a, &b, &c);

第2个回答  2014-05-13
你把 %lf 写成 %1f, 是小写的 L 不是数字 1。
scanf("%lf%lf%lf",&a,&b,&c);

c语言算一元二次方程的解出错
x1,x2); return 0;}

c语言题目,求解一元二次方程,错在哪里?
输入有错误,输入的时候不要用逗号分隔,应该是用空格分隔,因为前面格式字符串是%f%f%f。见下scanf的介绍:1. 函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。每一个指针要求非空,并且与字符串中的格式符一一顺...

C语言编程求一元二次方程问题,请大家看一下下面的C语言程序哪里出错了...
printf("求一元二次方程的解\\n");loop:printf("输入参数a,b,c\\n");\/\/设置循环跳转标号 scanf("%lf%lf%lf",&a,&b,&c);yyecfc(a,b,c);\/\/调用函数 printf("是否继续?(Y\/N)\\n");scanf("%c",&judge);\/\/这一步不能编译不知为什么,运行时候直接跳过这里结束了 if(judge=='Y'...

C语言计算一元二次方程结果一直为-inf,不知道是哪里出错了,求大神解答...
如下程序仅供参考:include <stdio.h>#include <math.h>int main(void) {double a,b,c,x1,x2,temp;printf(" 利用公式法求一元二次方程的解。\\n\\n");printf(" 请输入方程系数a、b、c的值(各数之间空格隔开):");while(scanf("%lf %lf %lf",&a,&b,&c) == 3){while(getchar...

C语言求一元二次方程的根,答案老是不对
你好,前面缺少头文件math.h,还有建议将float改成double,因为有的C编译器(比如VC++6.0)会将浮点数强制转化成double的,修改如下,不懂请追问:include<stdio.h> include<math.h> main(){ double a,b,c,X,x1,x2,e,f;printf("a=");scanf("%lf",&a);printf("b=");scanf("%lf",&...

一元二次方程c语言运行哪里出问题了,详细点
上楼的解答是错误的,其实你scanf()函数调用有个小问题,你录入的时候数字之间有空格,那么你格式化的时候应该也保留空格,而不是逗号。将 scanf("%f,%f,%f",&a,&b,&c);改为 scanf("%f %f %f",&a,&b,&c);程序正确运行如下:

求教C语言求一元二次方程解的编程哪里错了
a,float b);float a,b,c,d,m,n; int main(){printf("Please input a,b,c\\n"); scanf("%f%f%f",&a,&b,&c); d=b*b-4.0*a*c; if(d>0) { o(a,b,d); }else if(d==0) { p(a,b); } else { q(a,b); } printf("\\n"); return 0;...

c语言求一元二次方程方程代码哪里错了,老得不到正确答案
要么把double换成float,两个是不同数据类型。然后把语句:double delta = b*b - 4*a*c; 放到scanf语句后。这样就能顺利得出结果。由于之前你的程序没有输入a,b,c的值,程序自动为delta赋值,所以,你在输入a,b,c是没有意义的。你可以输入前打印一下那个double delta 的值。

用c语言 :求任意一元二次方程的根 第十三十四行出错 应该怎么改?
printf("方程%dx^2+%dx+%d=0有两个不同的实数解x1=%lf,x2=%lf\\n",a,b,c,x,y);system("PAUSE");return 0;} c语言中,语句后面要用分号的 if()后面如果要执行多个语句,要用{},否则只执行第一个语句,造成算法错误。x和y定义成double,系数a b c定义成int,这样用scanf("%d",&a...

c语言一元二次方程求根公式代码不知哪里出错了,运行输入数字后程序中止...
注意一元二次方程中a不可能为零,个人认为不需要进行判别;

相似回答