从嵌套for循环转换为嵌套while循环时出现问题

时间:2016-02-06 09:44:33

标签: c++

我正在尝试将此嵌套for循环转换为嵌套while循环:

该计划:

#include<iostream>
   using namespace std;
   void main()
   {
    int i,j,n,stars=1;
    cout<<"Enter the number of rows:";
    cin>>n;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=stars;j++)
            cout<<"*";
    cout<<"\n";
            stars=stars+1;
    }

   }

尝试嵌套while循环时,循环不会停止,有人可以给我解决方案吗?

#include<iostream>
using namespace std;
void main()
{
int n,i,j,k,stars=1;
   cout<<"Enter the number of rows";
   cin>>n;
    i=1;
    while(i<=n)
    {
    j=1;
    while(j<=stars)
    {
        cout<<"*";
        cout<<"\n";
        stars=stars+1;
    }
    j=j+1;
}
i=i+1;

}

1 个答案:

答案 0 :(得分:2)

您必须在循环中修改控件变量i ans j。你之后直接做了它。除此之外,变量stars在外for循环中递增。在secend代码段中,您在内部while循环中执行了此操作。像这样调整你的代码:

#include<iostream>

int main()
{
    int n;
    std::cout<<"Enter the number of rows";
    std::cin>>n;
    int stars=1;
    int i=1;
    while ( i<=n )         // corresponds to for(i=1;i<=n;i++) { .... }
    {
        int j=1;
        while ( j<=stars ) // corresponds to for(j=1;j<=stars;j++) cout<<"*";
        {
            std::cout<<"*";
            j++;           // increment control variable inside of the loop  
        }

        std::cout<<"\n";
        stars++;
        i++;               // increment control variable inside of the loop    
    }
    return 0;
}

请注意,如果您改进了代码的格式,您就会轻易发现此类错误。