求大哥 解c语言问题 这个程序为什么我输入20时结果是18??

#include "stdio.h"
void main()
{
float x,y;
printf("请输入数据: ");
scanf("%f",&x);
if(x<=-10) printf("%f\n",2*x);
else if(-10<x<=0) printf("%f\n",2+x);
else if (0<x<=10) printf("%f\n",x-2);
else printf("%f\n",x/10);
}

你这个条件不能这么写,如果想写数学上的关系0<x<=10,在程序中应该是x>0 && x<=10.
按你的写法0<x<=10,意思是(0<x)<=10,那么这里的计算步骤为:
首先,(0<x)的结果是1(真);
然后,1<=10,条件成立
因此执行x-2这一句
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-20
问题出在这里 if(0<x<=10) printf("%f\n",x-2);
输入20的时候,0<20的值为真,即是1,1<=10条件是真,所以输出20-2=18

c语言中不要用这种连写式,应该改为 (0<x&&x<=10) printf("%f\n",x-2);

其他连写式也一样修改即可
第2个回答  2011-11-20
#include "stdio.h"
void main()
{
float x,y;
printf("请输入数据: ");
scanf("%f",&x);
if(x<=-10)
printf("%f\n",2*x);
else
if(x>-10 && x<=0)
printf("%f\n",2+x);
else
if(x>0 && x<=10)
printf("%f\n",x-2);
else printf("%f\n",x/10);
}
这才是正确的写法 和上面各位大侠说的一样 C语言 不是数学 语法不能用错 不然谁也不会知道 会出现什么效果
第3个回答  2011-11-20
if(-10<x<=0) printf("%f\n",2+x); //这种条件判断你跟谁学的?基础哦
至少是这样:
if(-10<x && x<=0) printf("%f\n",2+x);
第4个回答  2011-11-20
是哪位大虾告诉你0<x<=10可以这么写的???
(x>0)&&(x<=10)
下面的错误也是一样