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

为什么输出显示“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日