明明有赋值语句啊,为什么s还是乱码?(C语言新手求指导)

#include
#include
void main(void)
{
int a,b,c,d,e,s=0;
printf("请输入要查询的年份:");
scanf("%d",&a);
b=2020-a;
c=b%4;
d=b/4;
e=365*3*d+366*d;

if(b!=0)
{
    if(c!=0)
    {
        s=(7+b*(356%7));
    if(s<0)
    {
        do
        s=s+7;
        while(s>0);
    }
    if(s>7)
    {
        do
        s=s-7;
        while(s<7);
    }
    }
    if(c=0)
    {
        s=7+(e%7);
        if(s<0)
    {
        do
        s=s+7;
        while(s>0);
    }
    if(s>7)
    {
        do
        s=s-7;
        while(s<7);
    }
    }

    switch(s)
        {
            case 1:printf("%d年的3月1日是星期一\n",a);break;
                case 2:printf("%d年的3月1日是星期二\n",a);break;
                    case 3:printf("%d年的3月1日是星期三\n",a);break;
                        case 4:printf("%d年的3月1日是星期四\n",a);break;
                                case 5:printf("%d年的3月1日是星期五\n",a);break;
                                    case 6:printf("%d年的3月1日是星期六\n",a);break;
                                        case 7:printf("%d年的3月1日是星期日\n",a);break;
    }
}

else
printf("今年的3月1日是星期日\n");
system("pause");

}

 if(s<0)
    {
        do
        s=s+7;
        while(s>0);
    }
当s<0的时候,做一次s+7,之后如果还小于0,就不循环了。

    if(s>7)
    {
        do
        s=s-7;
        while(s<7);
    }
当s>7(同时小于14)的时候,s减掉7,那么循环成立了,于是就拼命减,负数也满足<7,直到下溢。
if(c=0)
=和==号也没分清楚。

总之不谈你程序的问题,基本语法都不会