for循环和if循环

img


为什么答案是D选项呀,当x=29时候,++x=30满足条件,输出x等于30为什么是29,求解

这个程序的含义是1-100里+1后被2除余1,+1后被3除余2,+1后被5除余3的数字
由最后一个条件可知,数字结尾只能是8和3,这样就排除了a b d了
所以选择C
上机验证:

#include <stdio.h>

int main()
{
    int x; 
    for (x = 1; x <= 100; x++) 
        if (++x%2==0) 
            if (++x%3==0) 
                if (++x%5==0) 
                    printf("%d",x);
   
    return 0;
}

结果没有任何输出

img

应该什么都不会输出。
运算符优先级:++ > % > ==
++x这个表达式是先将x的值+1,然后再取x的值做取模运算,最后判断取模结果是否为0。三个if嵌套,每次x+1,不会同时满足三个表达式。