一样的代码为什么一个对一个错。

#include
#include
int main()
{
char a;
int n,i,j,k=0;
while(scanf("%c",&a)&&a!='@')
{
++k;
getchar();
scanf("%d",&n);
getchar();
if(k!=0)
printf("\n");

    for(i=1;i<n;i++)
    {
        for(j=1;j<=n+(i-1);j++)
        {
            if(j==n-(i-1)||j==n+(i-1))
                printf("%c",a);
            else
                printf(" ");
        }   
        printf("\n");
    }   
    for(j=0;j<n*2-1;j++)
        printf("%c",a);
    printf("\n");
}
return 0;

}//自己打的
#include
#include
int main()
{
char a;
int b,i,j,k=0;
while(scanf("%c",&a)&&a!='@')
{
++k;
getchar();
scanf("%d",&b);
getchar();
if(k!=1)
printf("\n");

    for(i=1;i<b;i++)
    {
        for(j=1;j<=b+(i-1);j++) 
         {
            if(j==b-(i-1)||j==b+(i-1))
               printf("%c",a);
            else 
               printf(" ");
         } 
        printf("\n");
    }       
    for(i=0;i<2*b-1;i++)
      printf("%c",a);
    printf("\n");
}
return 0;

}//搜的

你的代码没问题,唯一不同的就是

if(k!=0)
printf("\n");


if(k!=1)
printf("\n");

第一次打印有没有空行的问题