为什么这段程序中的float换成double会出错

#include<stdio.h>
#include<stdlib.h>
#include <math.h>
int main()
{
float a, b, c, d, e, y;
printf("请分别输入一元二次方程中的a,b,c\n");
scanf_s("%f", &a);
scanf_s("%f", &b);
scanf_s("%f", &c);
y = b*b - 4 * a*c;
printf("公式值为%f\n",y);
d = b + (float)sqrt(y);
e = b - (float)sqrt(y);
if (y<0)
{
printf("此方程无解");
system("pause");
return 0;
}
else
{
printf("y1=%f y2=%f", d, e);
system("pause");
return 0;
}

}

第1个回答  推荐于2017-09-23
float换成double后,以下三句要改:

scanf_s("%lf", &a);
scanf_s("%lf", &b);
scanf_s("%lf", &c);
double对应的输入类型格式串为:%lf long float的意思本回答被提问者采纳
第2个回答  2015-10-08
scanf和printf中对应的输出格式也应当由%f变成%lf