垂直闭环什么意思:c语言试题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/02 07:42:57
【2.21】下面程序的输出结果是____。
main()
{ int x,i;
for(i=1;i<=100;i++)
{ x=i;
if(++x%2==0) /*当x==28的时候,这句等价于if(29%2==0)吗?*/
if(++x%3==0) /*当x==70的时候,这句等价于if(72%2==0)吗?*/
if(++x%7==0)
printf("%d ",x);
}
}
A) 39 81 B) 42 84 C) 26 68 D) 28 70

参考答案D,
为什么是先除以7然后是3,然后2这样发反过来了。程序是怎样运行的

关键问题是++x和x++的区别,建议你再看看书,我也记不很清楚了.
印象中++x是先自加然后使用,x++是先使用然后自加.

程序应该是这样执行的:

main()
{ int x,i; /*定义变量*/
for(i=1;i<=100;i++) /*执行循环i从1到100自增加1*/
{ x=i; /*赋值(比如i=25,此时x=25)*/
if(++x%2==0) /*执行++x,此时x=26,求余,通过执行下一个if,不通过返回for(下同)*/
if(++x%3==0)
if(++x%7==0)
printf("%d ",x);
}
}

实在不明白就在每个if后加个printf("%d ",x),执行程序看打印的结果就知道了.