//解法一:直接打印法(特别麻烦的)
#include <stdio.h>
// int main() {
//     char ch = 'w';
//     scanf("%c\n",&ch);
//     for(int i = 0;i<6;i++)
//     {
//         switch(i)
//     {
//         case 1:
//         printf(" ");
//         printf(" ");
//         printf("%c\n",ch);break;
//         case 2:
//         printf(" ");
//         for(int j = 0;j<3;j++)
//             {printf("%c",ch);}
//             printf("\n");break;
//         case 3:
//             for(int j = 0;j<5;j++)
//             {printf("%c",ch);}
//             printf("\n");break;
//         case 4:
//         printf(" ");
//             for(int j = 0;j<3;j++)
//             {printf("%c",ch);}
//             printf("\n");break;
//         case 5:
//         printf(" ");
//         printf(" ");
//         printf("%c\n",ch);break;
//         default:break;
//     }
//     }
//     return 0;
// }

// //解法二:菱形拆分成三角形法(通法)
// #include<stdio.h>
// int main()
// {
//     //取字符
//     char ch = ' ';
//     scanf("%c\n", &ch);

//     int n = 5;//总行数,行数都为奇数
//     int i = 1;//第几行数
//     int j = 0;//计个数

//     //总循环
//     for (i; i <= n; i++)
//     {
//         if (i < (n - 1) / 2 + 1)//上三角形部分
//         {
//             for (j; j<(n- (1 + (2 * (i - 1))))/2; j++)//打印空格,上三角行第i行的空格个数/2
//             {
//                 printf(" ");
//             }
//             j = 0;
//             for (j; j<(1+(2*(i-1))); j++)//打印字符,上三角第i行的字符个数
//             {
//                 printf("%c", ch);
//             }
//             j = 0;

//         }
//         if (i == (n - 1) / 2 + 1)//对称中线部分
//         {
//             for (j; j < n; j++)//此时与字符数相等n=(1+(2*(i-1)))
//             {
//                 printf("%c", ch);
//             }
//             j = 0;
//         }
//         if(i > (n - 1) / 2 + 1)//下三角形部分
//             {
//             for (j; j < (1 + (2 * (i - 1))-n)/2; j++)//打印空格,下三角行第i行的空格个数/2,与上三角相反
//             {
//                 printf(" ");
//             }
//             j = 0;
//             for (j; j < (n - (1 + (2 * (i - 1)) - n)); j++)//打印字符,下三角第i行的字符个数,等于总数n-空格数
//             {
//                 printf("%c", ch);
//             }
//             j = 0;
//             }
//          printf("\n");//第i行打印完后换行
//     }
//     return 0;
// }

//解法三:数组替换法(通法))
#include<stdio.h>
#define N 5 //总行数总是奇数
int main()
{
    //第一部分:先把空格数组创建出来
    char ch = ' ';//先放空格
    char arr[N + 1] = { "" };//用于存放空格
    int a = 0;//判断用
    while (a < N)//存空格进数组里
    {
        arr[a] = ch;
        a++;
        if (a == N)
            arr[N] = '\0';//存放打印结束符
    }
    scanf("%c\n", &ch);//取字符,把空格字符ch替换掉

    //第二部分:设计打印菱形
    //打印正三角:从空格数组中间向两旁替换字符,直到替换满
    int i = 1;//行数
    int mid = (N - 1) / 2;//中线
    for (i; i <= (N + 1) / 2; i++)
    {
        arr[mid-(i-1)] = ch;//把字符放进空格数组
        arr[mid+(i-1)] = ch;//同上
        printf("%s\n", arr);
    }
    //打印倒三角:从字符数组两旁向中间替换空格
    ch = ' ';//再次放入空格
    int left = 0;
    int right = N - 1;
    for (i; i <= N; i++)
    {
        arr[left + (i - mid-2)] = ch;
        arr[right - (i - mid-2)] = ch;
        printf("%s\n", arr);
    }
    return 0;
}