这题选择D,原因是c的if判断里有个短路效应,意思就是说在逻辑运算时候,如果值已经能决定整个表达式的值,就不会再往右继续运算,比如说if(a || b),如果a为真,那么整个表达式就是真,就不会再运行b了,同样如果是if(a && b),如果a为假,那么整个表达式就为假,同样也不会再运行b,所以上面的
if ((a=2) || (b=1)) c=2; 注意这里是a=2,是赋值,不是判断的==,a为2,所以为真(c里0为假,非0为真),再加上上面的短路,所以b=1就不会运行,所以这行执行完成,a=2,c=2
if ((c==3) && (d=-1)) a=5; 因为上面的c=2了,所以c==3为假,同样d=-1和a=5也不会运行
最终只有a=2 c=2,结果输出的时候当然就是2,2,2,4了
改:C=5.0/9.0*(F-32.0);
楼下的前辈,定义double类型后,输入就要用:scanf("%lf",&F);
不然结果会错误的。
要注意他们在内存中的字节长度,用%f会截掉double的数据导致错误。