求ay的输出结果

来源:百度知道 编辑:UC知道 时间:2024/05/13 18:33:07
#include<stdio.h>
main()
{int y,a;
y=2;a=1;
while(y--!=-1)
{do{a*=y;a++;}while(y--);}
printf(”%d,%d”a,y)
答案是1,-2
我的算法是
外循环第一次开始 y=2时
内循环y=1,a=0,a=1
y=0,a=0,a=1内循环结束
外循环第二次开始 y=1时
内循环y=0,a=0,a=1内循环结束
外循环第三次开始 y=0时
内循环y=-1,a=-1,a=0
所以最后结果为a=0,y=-1
请问我哪里做错了?谢谢,详细点

外循环循环了两次

外循环第一次执行完:y=1,a=1
然后进入内循环
内循环第一次执行完:a=2 y=0
内循环第二次执行完并退出内循环:a=1 y=-1

执行并退出外循环(y--)
a=1,y=-2

#include<stdio.h>
main()
{
  int y,a;
  y=2;a=1;
  while(y--!=-1)
  {
    printf("%d, %d", a, y);//看看循环过程
    do
    {
      a*=y;a++;
      printf("%d, %d", a, y);//看看循环过程
    }while(y--);
  }
  printf("%d, %d", a, y);
}

在编译器上 跑一遍。把中间过程的 y a 输出来看一下就清楚了