C语言 关于打印空心三角形的问题 求代码改正?

问题是这样的:
图片说明
我的代码主体:

    char a[100];
    int m, n, k, i, j;

    scanf("%d", &n);
    for(k = 0; k < n + 2; k++)
    {
        m = 0;
        scanf("%c %d", &a[k], &m);
        for(i = 1; i <= m; i++)
        {
            for(j = 1; j <= 2 * m - 1; j++)
            {
                if(i + j < m + 1 && i < m)
                    printf(" ");
                if(i + j == m + 1 && i < m)
                    printf("%c", a[k]);
                if(j > m && j == i + m - 1 && i < m)
                    printf("%c", a[k]);
                if(m + 1 < i + j && 1 < i && i < m && j - i < m - 1 && i < m)
                    printf(" ");
                if(i == m)
                    printf("%c", a[k]);
            }
            printf("\n");
        }
        printf("\n");
    }

现在问题是
一 n+2时才可以输入两行的数据,而输入2后只输入一组便结束了
二 输入数据的那一行与输出三角形的第一行之间有多余空行,怎么删去?
PS 并不要求所有数据输入完后再一并全部输出,一一对应即可

char type;
int line; //记录输入行数 
int x,y; //x行定位,y元素定位 
printf("请输入字符:");
scanf("%c",&type);
printf("请输入行数:");
scanf("%d",&line);
for(x=1;x<=line;x++){
    for(y=1;y<=line*2-1;y++){
        if(x==line){
            printf("%c",type);
        } 
        if(x+y<line+1&&x<line){
            printf(" ");
        } 
        if(x+y==line+1&&x<line){
            printf("%c",type);
        }
        if(y>line&&y==x+line-1&&x<line){
            printf("%c",type);
        }
        if(line+1<x+y&&1<x&&x<line&&y-x<line-1&&x<line){
            printf(" ");
        } 
    }
    printf("\n");
}