一道C语言基础题,想了一晚上实在不知道自己错哪了

一道C语言基础题,想了一晚上实在不知道自己哪里错了
目标是输出    1
           121
          12121
         1212121
下面是我写的程序
#include <stdio.h>
void main()
{
int i,j,a,c;
for(i=1;i<=4;i++)
{
for(j=1;j<=21-i;j++)
         printf(" ");
 for(j=1;j<=2*i-1;j++)
         for(a=1;a<=j;a++)
 {
           c=a%2;
 if(c=0)
printf("2");
     if(c=1)
    printf("1");
}
          printf("\n");
}
}
C语言 新手 求助

------解决方案--------------------
代码格式要规范,缩进等,我们新手更应该注意别养成习惯了。
#include <stdio.h>
void main()
{
    int i,j,a,c;
    for(i=1;i<=4;i++)
    {
//输出空格
        for(j=1;j<=21-i;j++)
{
printf(" ");
}
//输出三角形
        for(j=1;j<=2*i-1;j++)//j为每行输出个数
{
 //for(a=1;a<=j;a++)//a又循环所以每行输出j*a个
 {
 c=j%2;
 //再说为什么全部输出1
 /*if(c=0)
printf("2");
 if(c=1)
printf("1");*/
 if(c==0)
 printf("2");
 if(c==1)
printf("1");
 }
}
        printf("\n");
    }
}


最后,楼主加油,共勉!一道C语言基础题,想了一晚上实在不知道自己错哪了
------解决方案--------------------
引用:
刚才格式太难看了,我在重新发一遍!
你的程序两个错误,第一个if(c=0),if(c=1)那这并不是赋值,而是比较,所以应该是if(c==0),if(c==1);
第二个错误, 在for(j=1;j<=2*i-1;j++) ,这条语句造成了结果为什么第n行不是显示2n-1个数,而是显示1+...+2n-1,把这条语句去掉改成j=2n-1;
下面是我给楼主改的程序,就修改了上述所说的内容,楼主可以对比一下

#include <stdio.h>
void main() 
{
int i,j=1,a,c;
for(i=1;i<=4;i++)
 { 
 for(j=1;j<=21-i;j++)
 printf(" "); /*打印空格*/
 j=2*i-1; /*第n行打印2n-1个数*/
 for(a=1;a<=j;a++)
 {
 c=a%2;
 if(c==0)
 printf("2");
 if(c==1)
 printf("1"); 
 }
 printf("\n");
 }
}

跟哥哥想的一样