其中有不少小的错误,作为程序它是不能运行的。
#include
int main( )
{ int y=2,a=1;
while(y--!=-1)
{ do{a *=y; a++;} while(y--); }
printf("%d,%d",a,y);
return 0;
}
运行后的输出是:
1,-2
分析运行过程:
y=2,a=1;
判断,为真,y变为1
进入do循环:
a=1*1=1; a++变为2
内循环判断y--为真,y变为0;
再次内循环:
a=2*0=0; a++变为1
内循环判断y--为假,y变为-1;
外循环判断为假,y变为-2;
所以,最后的输出是1,-2
C语言中 -1<=i<1 这样的语句是无法达到你要的效果的,对于这个句子,C语言是这样处理的: (-1<=i)<1 (1) 这样的话,-1<=i为真,所以这个表达式的值为1,也就是说(1)这个表达式等价于(1<1)然后这个式子为假,所以不会进入该循环,所以i没有发生变化,也不会输出i,所以答案为-1 如果for循环写成这样:for (a=1,i=-1;-1<=i&&i<1;i++) 那么题主你的答案就对了。
#include
int main(void)
{
int y=2,a=1;
while(y--!=-1)
{
do{a*=y; a++;}
while(y--);
}
printf("%d,%d",a,y);
system("pause");
return 0;
}
运行结果是:1,-2