如何用c++打印出菱形图

怎么可以用c++打印出下面的图形,创建程序,要求输出结果如下图所示

img


#include<stdio.h>
int main()
{
    int i,j,n,k=0;
    /********输入一个数用来控制打印出菱形的宽度*********/
    scanf("%d",&n);
    char a[2*n-1][2*n-1];
    /*********分两部分打印每次打印出一行**************/
    for(i=0;i<n;i++)
    {
        for(j=0;j<2*n-1;j++)
        {
            if(j>=((2*n-1)/2-i)&&j<=((2*n-1)/2+i)) /**寻找每行的规律***/
                putchar('*');
            else
                putchar('.');
        }
        putchar(10);
    }
    for(i=n;i<2*n-1;i++)
    {
        k++;//此变量只是用于找规律而加的一个参数
        for(j=0;j<2*n-1;j++)
        {
            if(j>=((2*n-1)/2-i+2*k)&&j<=((2*n-1)/2+i-2*k))
                putchar('*');
            else
                putchar('.');
        }
        putchar(10);
    }    
    return 0;
}
#include<iostream>
using namespace std;
 
int main() {
    int width = 20;   //宽度
    int space = 20;  //距离左边的空格数
    for (size_t i = 0; i < width; i++) {
        for (size_t j = 0; j < space - i; j++) cout << ' ';
        for (size_t j = 0; j < 2*i + 1; j++) cout << '*';
        cout << endl;
    }
    for (size_t i = width-1; i >0; i--) {
        for (size_t j = 0; j < space+1-i; j++) cout << ' ';
        for (size_t j = 0; j < 2 * i - 1; j++) cout << '*';
        cout << endl;
    }
    return 0;
}