求大神解答C语言题目 若运行时从键盘上输入2.0<CR>(CR表示回车),则下面程序输出结果是

main()
{ float x,y;scanf("@f",&x);
if(x<0.0) y=0. 0;
else if((x<5.0)&&(x!=2.0) y=1.0/(x+2.0);
else if(x<10.0) y=1.0/x;
else y=10.0;
printf("%f\n",y);}
A. 0.000000 B. 0.250000 C. 0.500000 D.1.000000
{ float x,y;scanf("@f",&x); 改为{ float x,y;scanf("%f",&x);
,不好意思写错了

if((x<5.0)&&(x!=2.0) y=1.0/(x+2.0); 漏括号,应是:
if((x<5.0)&&(x!=2.0)) y=1.0/(x+2.0);

scanf("@f",&x); 格式 @f 将不能读入数值。
假定 x 为 0, 条件判断 将满足 if((x<5.0)&&(x!=2.0)) 的条件,
进入: y=1.0/(x+2.0);
y=1.0/(0+2.0); 得 C. 0.5

若 scanf("%f",&x); 格式 %f 将 读入数值 2.0。
不满足: if(x<0.0)
不满足: if((x<5.0)&&(x!=2.0))
满足: if(x<10.0) y=1.0/x;
y = 1.0 / 2.0; 也得 C. 0.5追问

坏了坏了我写错了不是@f,是%f,改数会影响结果吗?

追答

我已说明,用了 @f, 执行 y=1.0/(x+2.0); 得 C. 0.5

用了 %f, 满足 if(x<10.0) y=1.0/x; 执行 y = 1.0 / 2.0; 也得 C. 0.5
不影响选择C。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-11-03
选C,只有 else if(x<10.0) y=1.0/x; 这一句运行

1.0除2.0的结果是C
相似回答