为什么这段代码,只能输出3行啊。

学c++的时候看到的例子,例图是四行,但我打出来,就只有三行。
int main()
{
int i,j,n=4;
for(i=1;j<=n;i++)
{
for(j=1;j<=30;j++)
cout<<' ';
for(j=1;j<=8-2*i;j++)
cout<<' ';
for(j=1;j<=2*i-1;j++)
cout<<'*';
cout<<endl;
}

#include<iostream>
using namespace std;
int main()
{
    int i, j, n = 4;
    for (i = 1; i <= n; i++)//抄错了,这里的j应该是i
    {
        for (j = 1; j <= 30; j++)
            cout << ' ';
        for (j = 1; j <= 8 - 2 * i; j++)
            cout << ' ';
        for (j = 1; j <= 2 * i - 1; j++)
            cout << '*';
        cout << endl;
    }
}

for(i=1;j<=n;i++)
这里是
foe (i=1;i<=n;i++)

for(i=1;j<=n;i++)
{
for(j=1;j<=2*i-1;j++)
cout<<'*';
cout< }
i=1,n=4,j(未初始化)->一行 //这里很容易出问题,建议先初始化(当然三行的问题不会出在这.)
i=2,n=4,j=4 ->两行
i=3,n=4,j=6 -> 三行;
可以看看有星星的行数是几行,或者看看i,j的值哪里和书上的不一样。