
一个简单的程序题 ,请各位高手帮帮忙
#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
能详细说一下么? 展开
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
能详细说一下么? 展开
3个回答
展开全部
/*试一下这个吧,试着把程序中的变化打印出来.内层循环只在第一次外循环时进行,当第一次内循环结束后外循环才会继续,而且内循环在之后,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();
}
#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();
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询