请考虑以下事项:
#include <stdio.h>
int main()
{
int first=9;
int second=0;
double ratio;
if(second==0)
ratio="n/a";
else
ratio=(double)singularCount/pluralCount;
printf("ratio is: %f", ratio);
return 0;
}
这显然不会按预期运行。
如果没有问题,我如何修改我的代码/ print语句来打印一个浮点数,如果有0除法则如何修改n / a?
我将在列表中打印许多这些比率,所以我希望看到&#34; n / a&#34;当除以0时。
期望的输出:
ratio is: n/a
答案 0 :(得分:1)
你做错了什么......
你不应该把一个字符串放入一个双变量中 你想要做的是在未定义的双精度上使用isnan(这是完全合法的持有), 并对其进行if声明。
类似的东西:
if (isinf(ration)) printf("ration is undefined\n");
else printf...
通过这种方式,您可以发送double并从方法/过程/函数中获取它(我敦促您将其用于代码分离),然后您将能够获得不同的行为。
顺便说一下 - 看看这段代码:#include <stdio.h>
#include <math.h>
void main()
{
double d = 1.0/0.0;
if (isnan(d)) printf("it is n/a\n");
else if (isinf(d)) printf("it is inf\n");
else printf("%f\n",d);
}
另一件事 - 在inf或nan的情况下,%f只会打印字符串&#34; inf&#34;和&#34; nan&#34;,如果它对你足够好 - 你不需要换一件东西,如果它适合你的眼睛。
答案 1 :(得分:0)
if (second == 0) {
printf("ratio is: n/a");
} else {
printf("ratio is: %f", (double)singularCount/pluralCount);
}