05年9月二级C选择题求解?
当把下列四个表达式用作if语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是()。A、 k%2
B、 k%2==1
C、 (k%2)!=0
D、 !k%2==1
请解释具体一点!本人不胜感激! 这个地方主要有if()的执行条件的判断0假,其他真,还有4个选项分别表示的含义的比较
A k%2 其结果有 0 或1;在if的中意思就是 结果为1执行语句完全写出来就是 if(k % 2 == 1) 执行{}
B k % 2 == 1 不在作解释 同上 if(k % 2 == 1) 执行{};
C 是B的 相反的写法, 因为结果只有 0 和 1 那么 != 0就是 k%2 == 1 的意思,同上 if(k % 2 == 1) 执行{};
D 就正好不是 先是 k%2 == 1 然后 去表达式结果的 非(!)其含义就是 if(k % 2 != 1)执行{}。 D #include <stdio.h>
void main()
{
int k;
scanf("%d",&k);
if( )
printf("it is true.\n");
else
printf("It'snot.\n");
}
可以这样,当是奇数时条件为真,偶数时条件为假。只有D是不成立的 A, B, C 都是 k%2 为 真 的时候 if语句 执行, D k%2 为 假 的时候 if语句 执行。 d 本帖最后由 ryxcaixia 于 2015-7-31 10:30 编辑
if的判定很简单 也有点过于简单 因为他只认识一个数字那就是0 (判断条件不成立自动返回一个0) 除此之外的 他一律都认为是真 这就是传说中的 0位假 非0即为真 少年 切记切记
if(XXX) 此时XXX如果是0, 不管是直接填写的为if(0), 还是if(a=0)这种赋值语句还是条件判断失败 默认返回一个0 编译器一看 卧槽 这都是0啊 我认识啊 唯一认识的数字啊 是假的啊判定条件不成立啊 也就不会执行接下来的语句
如果if(XXX) 此时XXX如果不是0, 哪怕他是1, -1, 3.1415926, 或者是if(a=201314),以及判断成功默认返回一个真值 编译器一看 咦 这个貌似不是0哎 不认识啊那么这个东西肯定就是真了 那么就会执行接下来的语句
楼主如果看懂了 就知道选神马了 d 默默路过 发表于 2015-7-30 21:38
这个地方主要有if()的执行条件的判断0假,其他真,还有4个选项分别表示的含义的比较
A k%2 其结果有 0...
D解释有问题吧,!的优先级要高,应该是先对k取非然 后在取2的余数与等于1为真执行if {},不等于1就不执行{}, 桃花飞舞 发表于 2015-8-6 11:51
D解释有问题吧,!的优先级要高,应该是先对k取非然 后在取2的余数与等于1为真执行if {},不等于1就不执行{} ...
谢谢提醒,确实有问题,没有考虑到 ! 的优先级高与后面。 桃花兄说的对,我没有考虑到 “!”的 优先级问题; 加上优先级的话, 前面三个的 结果是 求 k 本身摸 2 后的结果是否为1; 而 D是 求 k的逻辑非 摸2 之后的结果是否为1。
页:
[1]