具体代码如下:
#include<stdio.h>
#include<math.h>
int main()
{
float a,b,c,t, p, q, o;
scanf_s("%lf,%lf,%lf", &a, &b, &c);
t = b * b - 4 * a * c;
o = sqrt(t);
if (t == 0)
{
q = p = ((-b) + o) / 2 * a;
printf("q=p=%f", &q);
}
else
if (t > 0)
{
q = ((-b) + o) / 2 * a;
p = ((-b) - o) / 2 * a;
printf("q=%f,p=%f", &q, &p);
}
return 0;
}
最后编译的结果却是这样,这是为什么啊?
printf("q=p=%f", &q); 输出里,q 前面没有'&' 符号。
printf("q=%f,p=%f", &q, &p); 这里也是一样的多了 ‘&‘ 符。
修改见注释处,供参考:
#include <stdio.h>
#include <math.h>
int main()
{
float a, b, c, t, p, q, o;
scanf_s("%f%f%f", &a, &b, &c); //修改
//scanf_s("%lf,%lf,%lf", &a, &b, &c);
t = b * b - 4 * a * c;
if (t >= 0) //修改
{
o = (float)sqrt(t);
if (t == 0)
{
q = p = ((-b) + o) / 2 * a;
printf("q=p=%f", q); //printf("q=p=%f", &q);//修改
}
else if (t > 0){
q = ((-b) + o) / 2 * a;
p = ((-b) - o) / 2 * a;
printf("q=%f,p=%f", q, p); //printf("q=%f,p=%f", &q, &p);//修改
}
}
else{ //修改
printf("No real solution");//修改
}
return 0;
}