漏斗形指定符号堆砌问题

鄙人大一新生,pta上有一题要求用输入数以下最大的数量的“”打出漏斗形。如:
5个

1空格3个*
2空格1个*
1空格3个*
5个*

#include 

#include 

using namespace std;

int main()
{
    int a,b,c,countj,flag=0;

    cin>>a;

    for(int i=a;i>=1;i--)/*对输入的a从大到小循环筛选*/
    {
        for(int j=1;j<=i;j++)/*对比a小的数从小到大循环*/
        {
            countj++;
            if(2*j*j-1==i)/*若从大到小的i可以做该数列前j项和*/
            {
                flag=1;/*做一个标志终止循环 countj为项数*/
                break;
            }
        }
        if(flag==1)
        {
            break;
        }
    }
    for(int k=1;k<=2*countj-1;k++)/*共2j-1行*/
    {
        c=fabs(k-countj);/*距中间行的距离*/
        for(int l=1;l<=countj-c-1;l++)/*输出合适数量空格*/
        {
            cout<<" ";
        }
        for(int m=1;m<=2*c-1;m++)/*输出合适数量“*”*/
        {
            cout<<"*";
        }
        cout<return 0;
}


我写的这个运行后会*刷屏

输入 1,2, 3, 这样的数字测试。
然后打印出 countj, c 的值, 我认为你这些数值算错了。