回 帖 发 新 帖 刷新版面

主题:小问题,求助

#include"stdio.h"
void main()
{
int y=9;
for( ;y>0;y--)
if(y%3==0)

    printf("%d",--y);
    continue;
}
}
怎么算出是852的呢

回复列表 (共8个回复)

沙发

那lz觉得答案是怎样的呢?我很纳闷、

板凳


怎么算出来的呢  我要那个思维

3 楼


关键在于printf里面的--y。当第一次循环时y=9if 成立,则输出--y,即在原来y=9的基础上减1再输出,即为8   。当再次for成立 时y=6,再减1输出即为5,当再一次if成立时,y=3再减1输出即为2。--y与y--是不同的,你可以在编译器上试试。

4 楼


当y=9时
y%3=0
所以满足输出条件 printf("%d",--y);是先让y=y-1=8 之后在打印出y,所以有个8
然后接着循环
y--   之后y=7
y%3!=0所以循环
y--   之后y=6
y%3=0
所以满足输出条件 printf("%d",--y);--y之后y=5;所以打印出5
接着循环......
当y=3时y%3=0
所以满足输出条件 printf("%d",--y);--y之后y=2;所以打印出2
当y=0是,不满足循环
条件 退出。
所以是852

http://www.cosye.com/

5 楼


当y=9时
y%3=0
所以满足输出条件 printf("%d",--y);是先让y=y-1=8 之后在打印出y,所以有个8
然后接着循环
y--   之后y=7
y%3!=0所以循环
y--   之后y=6
y%3=0
所以满足输出条件 printf("%d",--y);--y之后y=5;所以打印出5
接着循环......
当y=3时y%3=0
所以满足输出条件 printf("%d",--y);--y之后y=2;所以打印出2
当y=0是,不满足循环
条件 退出。
所以是852

http://www.cosye.com/

6 楼


和楼上同解

7 楼

修改输出语句为
printf("%d\n",--y);
就是你想要的答案了!

8 楼

只有y是3 的倍数是才有输出。。。。[em2]

我来回复

您尚未登录,请登录后再回复。点此登录或注册