主题:小问题,求助
xin900708
[专家分:0] 发布于 2011-06-25 13:36:00
#include"stdio.h"
void main()
{
int y=9;
for( ;y>0;y--)
if(y%3==0)
{
printf("%d",--y);
continue;
}
}
怎么算出是852的呢
回复列表 (共8个回复)
沙发
fragileeye [专家分:1990] 发布于 2011-06-25 14:40:00
那lz觉得答案是怎样的呢?我很纳闷、
板凳
xin900708 [专家分:0] 发布于 2011-06-27 23:18:00
怎么算出来的呢 我要那个思维
3 楼
鹏程燕舞 [专家分:0] 发布于 2011-06-28 08:19:00
关键在于printf里面的--y。当第一次循环时y=9if 成立,则输出--y,即在原来y=9的基础上减1再输出,即为8 。当再次for成立 时y=6,再减1输出即为5,当再一次if成立时,y=3再减1输出即为2。--y与y--是不同的,你可以在编译器上试试。
4 楼
guosongling [专家分:0] 发布于 2011-06-28 15:58:00
当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 楼
guosongling [专家分:0] 发布于 2011-06-28 15:59:00
当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 楼
h7618324 [专家分:0] 发布于 2011-06-29 20:54:00
和楼上同解
7 楼
f34355281 [专家分:50] 发布于 2011-07-10 21:47:00
修改输出语句为
printf("%d\n",--y);
就是你想要的答案了!
8 楼
zhy123 [专家分:0] 发布于 2011-08-18 14:54:00
只有y是3 的倍数是才有输出。。。。[em2]
我来回复