我想问一下最后一行代码为啥要怎么写?? %5.2f是什么意思?
本帖最后由 nk54 于 2020-10-31 03:44 编辑#include <stdio.h>
#include <math.h>
void main()
{
double a,b,c,x1,x2,p,q,disc;
scanf("%lf,%lf,%lf\n",&a,&b,&c);
disc =b*b-4*a*c;
p =sqrt(disc)/(2*a);
q =-b/(2*a);
x1 =p+q;
x2 =p-q;
printf("\nx1=%5.2f\nx2=5.2f\n",x1,x2);
}
本帖最后由 nk54 于 2020-10-31 00:21 编辑
为啥我粘贴不了题目的图片 本帖最后由 jackz007 于 2020-10-31 01:49 编辑
printf("\nx1=%5.2f\nx2=%5.2f\n",x1,x2);
出现在 printf() 函数引号中的 %5.2f 是格式描述符,当需要使用 printf() 函数输出变量的时候,格式描述符可以规定其内容呈现的形式。本例代码中的两个 %5.2f 代表要在文本信息的当前位置按 5 个字符宽度,保留 2 位小数的形式分别显示后面两个变量的数值,格式描述符与变量之间的对应关系如颜色所示。 本帖最后由 风过无痕1989 于 2020-10-31 01:26 编辑
nk54 发表于 2020-10-31 00:14
为啥我粘贴不了题目的图片
不用图片了,你这是求一元二次议程的根,错在这一句: scanf("%lf,%lf,%lf\n",a,b,c);
应该是: scanf("%lf%lf%lf\n",&a,&b,&c);scanf() 函数使用中,除控制符外,最好是不要加任何其他符号,包括空格和逗号,容易出错,后面三个参数应该是取变量的地址,而不是变量本身
还有就是一元二次方程的求解,需要有一个判断的过程,下面给你一个完整的程序:
#include<stdio.h>
#include<math.h>
#define EXP 0.00000001 // 由于精度的原因,float、double类型不能比较大小
int main()
{
double a = 0.0;
double b = 0.0;
double c = 0.0;
double disc,p,q;
scanf_s("%lf%lf%lf",&a,&b,&c);
if((a >= -EXP) && (a <= EXP))
{
printf("不是一元二次方程\n");
}
else
{
disc = b * b - 4 * a * c;
}
p = - b / (2 * a);
q = sqrt(disc)) / (2 * a);
if((disc >= - EXP) && (disc <= EXP))
{
printf("有两个相同的实根:x = %.2lf\n",p);
}
else if(disc > 0.0)
{
printf("x1 = %.2lfx2 = %.2lf\n",p + q,p - q);
}
else
{
printf("有两个共轭的复根: %.2lfi%.2lfi\n",p + q,p - q);
}
return 0;
} 本帖最后由 nk54 于 2020-10-31 03:55 编辑
风过无痕1989 发表于 2020-10-31 00:36
不用图片了,你这是求一元二次议程的根,错在这一句: scanf("%lf,%lf,%lf\n",a,b,c);
应该是: sca ...
不对,我问的是最后一行的代码,不过你说的那里也是我敲错了,谢谢
页:
[1]