nk54 发表于 2020-10-31 00:11:48

我想问一下最后一行代码为啥要怎么写?? %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:14:41

本帖最后由 nk54 于 2020-10-31 00:21 编辑


为啥我粘贴不了题目的图片

jackz007 发表于 2020-10-31 00:32:48

本帖最后由 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 00:36:00

本帖最后由 风过无痕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:50:55

本帖最后由 nk54 于 2020-10-31 03:55 编辑

风过无痕1989 发表于 2020-10-31 00:36
不用图片了,你这是求一元二次议程的根,错在这一句: scanf("%lf,%lf,%lf\n",a,b,c);

应该是: sca ...

不对,我问的是最后一行的代码,不过你说的那里也是我敲错了,谢谢
页: [1]
查看完整版本: 我想问一下最后一行代码为啥要怎么写?? %5.2f是什么意思?