#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的结果,查了一下是非法计算的意思,为什么啊,我觉得这个程序没什么问题?
#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的结果,查了一下是非法计算的意思,为什么啊,我觉得这个程序没什么问题?
在你的代码中,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函数中,输出浮点数的小数点后的位数也要符合题目要求