在C++中将FOR循环转换为DO WHILE循环

use*_*662 1 c++ loops for-loop do-while

即时通讯试图将其转换为do-while; 它应该根据您输入的数字显示金字塔:

    int size,a,b,c;
    printf("Enter a Number: ");
    scanf("%d",&size);
    printf("\n");

    // for loop starts here
    for(a=1; a<=size; a++)
    {

     for(b=1; b<=size-a; b++)
     {
      printf(" ");
     }

     for(c=1; c<=(2*a)-1; c++)
     {
      printf("*");
     }

      printf("\n");
    }
     getch();
   }
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所做的:

    int size;
    int a=1;
    int b=1;
    int c=1;

    do {

     a++;

      do {
       c++;
       printf("*");
      } while(c<=((2*a)-1));

        do {
       printf(" ");
          b++;
      } while(b<=(size-a));

      printf("\n");

    } while(a<=size);

    getch();
   }
Run Code Online (Sandbox Code Playgroud)

Aaaa和它没有显示相同的输出,任何暗示家伙?TIA :)

Nei*_*irk 11

一个for循环

for (BEGIN; COND; INC)
{
    WORK;
}
Run Code Online (Sandbox Code Playgroud)

等同于while循环

{
    BEGIN;
    while (COND)
    {
        WORK;
        INC;
    }
}
Run Code Online (Sandbox Code Playgroud)

...除了部分continue语句的效果WORK(跳转到的for循环),并且循环中声明的名称与声明的声明区域相同.continueINCforBEGINCOND

然而,它并不是一个优雅的do-while循环.

{
    BEGIN;
    do
    {
        if (! COND) break;
        WORK;
        INC;
    } while (true)
}
Run Code Online (Sandbox Code Playgroud)

或者(虽然它重复代码)

{
    BEGIN;
    if (COND)
    {
        do
        {
            WORK;
            INC;
        } while (COND)
    }
}
Run Code Online (Sandbox Code Playgroud)