我想制作X和N类型为double的简单程序,所以如果用户输入4.4的数字,那么do-while循环就会输出并打印bla bla。
如果用户输入的数字为5.6然后do-while需要返回并让用户输入一个小于n的数字.5是否可以使用double类型创建条件?
#include <stdio.h>
int main(){
double x=0.0,n=0.0;
do{
printf("Enter n(so it's less than n.5):");
scanf("%lf",&n);
x = n - (int)n;
}while(n<=0.0 && x>=0.5);
printf("Integer part is %d\nDecimal is %.3lf\n",(int)n,x);
return 0;
}
答案 0 :(得分:3)
是的,这绝对可能。但是,您编写的条件永远不会成为真实。
while(n<=0.0 && x>=0.5)
你能告诉我一个小于或等于零且大于或等于0.5的数字吗?没有这样的事情。
您的案例中的无效数字是小于或等于零的数字,或数字大于或等于0.5,因此您需要将&&
更改为||
。
答案 1 :(得分:2)
是否可以使用double类型创建条件?
是。肯定是。
关系运算符<=
和>=
可以正常使用浮点类型。
将它们用于整数类型和浮点类型之间的一个主要区别是,您必须处理浮点表示的不精确性质。请参阅Floating point comparison作为比较浮点数时必须处理的问题的起点。
答案 2 :(得分:1)
我认为你的意思是
while(n<=0 || n>5)
答案 3 :(得分:0)
问题将发生在n<=0.0
,它仅适用于nagative或零double值以及x>=0.5
正数。此代码可以帮助您解决此问题。
#include <stdio.h>
#include <math.h>
int main(){
double x=0.0,n=0.0;
do{
printf("Enter n(so it's less than n.5):");
scanf("%lf",&n);
x = n - (int)n;
}while(fabs(x)>=0.5);
printf("Integer part is %d\nDecimal is %.3lf\n",(int)n,x);
return 0;
}