流川333 2023-02-15 12:04 采纳率: 100%
浏览 55
已结题

为什么输出显示“nan”

#include<stdio.h>
int main(void)
{
long double a;
    
scanf("%.6Lf", &a);
if(a == 0)
{
a = 0.0000;
printf("%.4Lf", a);
} 
else
{
a = 1 / a;
printf("%.3Lf", a);
}

return 0;
}
输出什么数字也只会得到nan的结果,查了一下是非法计算的意思,为什么啊,我觉得这个程序没什么问题?

  • 写回答

4条回答 默认 最新

  • 量化研究所 2023-02-15 13:28
    关注

    在你的代码中,scanf函数的格式控制字符串中,%.6Lf是不合法的,应该改为%Lf。%.6Lf是用来指定浮点数的小数点后的位数的,但是scanf函数中不支持这种格式。

    另外,当输入的a为0时,1/a会出现除0的情况,导致结果为NaN。你可以在输入a之后,加上对a是否为0的判断,如果a为0,则直接输出0.0000。

    
    #include <stdio.h>
    
    int main(void)
    {
        long double a;
        scanf("%Lf", &a);
        if (a == 0) {
            printf("0.0000");
        } else {
            a = 1 / a;
            printf("%.3Lf", a);
        }
        return 0;
    }
    
    

    注意,在printf函数中,输出浮点数的小数点后的位数也要符合题目要求

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月23日
  • 已采纳回答 2月15日
  • 创建了问题 2月15日

悬赏问题

  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题
  • ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?