鱼C论坛

 找回密码
 立即注册
查看: 1466|回复: 4

[已解决]我想问一下最后一行代码为啥要怎么写?? %5.2f是什么意思?

[复制链接]
发表于 2020-10-31 00:11:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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);


}


最佳答案
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 位小数的形式分别显示后面两个变量的数值,格式描述符与变量之间的对应关系如颜色所示。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-10-31 00:14:41 | 显示全部楼层
本帖最后由 nk54 于 2020-10-31 00:21 编辑


为啥我粘贴不了题目的图片
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 位小数的形式分别显示后面两个变量的数值,格式描述符与变量之间的对应关系如颜色所示。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 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 = %.2lf  x2 = %.2lf\n",p + q,p - q);
    }
    else
    {
        printf("有两个共轭的复根: %.2lfi  %.2lfi\n",p + q,p - q);
    }

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 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 ...


不对,我问的是最后一行的代码,不过你说的那里也是我敲错了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 19:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表