一个简单的程序题 ,请各位高手帮帮忙

#include<stdio.h>intmain(void){inty,a;y=2,a=1;while(y--!=-1){do{a*=y;a++;}while(y--);... #include<stdio.h>
int main(void)
{
int y,a;
y=2,a=1;
while(y--!=-1)
{do{a*=y;a++;}while(y--);}
printf("%d,%d\n",a,y);
}
为什么运行出来是1 -2
我纠结了很久还是-1 -2
能详细说一下么?
展开
 我来答
wangmeng07
2011-03-25 · TA获得超过290个赞
知道小有建树答主
回答量:214
采纳率:0%
帮助的人:210万
展开全部
/*试一下这个吧,试着把程序中的变化打印出来.内层循环只在第一次外循环时进行,当第一次内循环结束后外循环才会继续,而且内循环在之后,y=-1,外循环也不再进行,直接退出。*/
#include<stdio.h>
int main(void)
{
int y,a,i;
i=1,y=2,a=1;
printf("%before all, a = %d, y = %d\n", a, y);
while(y--!=-1)
{
printf("first while begin, a = %d, y = %d\n", a, y);
do
{
printf("\t%dst dowhile begin,\ta = %d, y = %d\n", i, a, y);
a*=y;
a++;
printf("\t%dst dowhile end,\ta = %d, y = %d\n", i, a, y);
i++;
}
while(y--);
printf("first while end, a = %d, y = %d\n", a, y);
}
printf("%d,%d\n",a,y);
//getchar();
}
331215630
2011-03-25 · TA获得超过831个赞
知道答主
回答量:75
采纳率:0%
帮助的人:36.6万
展开全部
554
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
never715
2011-03-25 · TA获得超过942个赞
知道小有建树答主
回答量:1010
采纳率:84%
帮助的人:529万
展开全部
y--!=-1是先比较y的值与-1是否相等,然后再自减1,所以你的想法就是错在这里的
追问
可是我好像考虑了 这一点
但还是纠结不出来
能再给我分析一下么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式