第一种方法,直接一行一行打印。通俗易懂

#include <stdio.h>
int main()
{
  char a;
  scanf("%c", &a);
  printf("    %c  \n", a);
  printf("   %c %c \n", a, a);
  printf("  %c %c %c\n", a, a, a);
  printf(" %c %c %c %c\n", a, a, a, a);
  printf("%c %c %c %c %c\n", a, a, a, a, a);
  return 0;
  }

第二种方法,用到了for嵌套循环,思路就是找到每一行字符数量与字符前面的空格数量的关系。 如第一行有4个空格一个字符,第二行有3个空格2个字符,以此类推。

  #include <stdio.h>
  int main()
  {
  char a;
  scanf("%c", &a);//字符用%c字符串用%s
  int i, j;//i表示行数,j表示空格数
  for (i = 1; i <=5; i++)//为什么不是i=0;i<=5呢?可以试试看,发现会多出来一行空白。
   {
      for (j = 1; j <= 5 - i; j++)//判断打印几个空格
      {
          printf(" ");
      }
      int b=0;//b表示字符数量
      for (b = 0; b <= 5 - j; b++)//判断打印几个字符数量,5-j正好是对应行的字符数量。
      {
          printf("%c ", a);//这里注意%c后面要跟着一个空格。
      }
      printf("\n");
   }
}