输入一个日期,输出该日期是星期几 C语言

下面是代码,麻烦帮忙看看,我这个代码一直没有输出,不知道是哪里出问题了

#include <stdio.h>
int main()
{
    int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    char b[7]={'星期一','星期二','星期三','星期四','星期五','星期六','星期日'}; 
    int year,month,day,t,s,a;
    char r={'\0'};
    printf("请输入日期:");
    scanf("%d.%d.%d",&year,&month,&day);
    t=((year-2001)+(year-2001)/4+1)%7;
    s=m[month-1];
    a=(s+day)%7;
    printf("%d.%d.%d是",year,month,day);
    if(t+a-1<=7){putchar(b[t+a-1]);};
    if(t+a-1>7){putchar(b[t+a-7]);};
    return 0;
}

修改处见注释,算法还是有问题的,闰年判断也没有,输出星期数不准,题主再修改下:

#include <stdio.h>
int main()
{
    int m[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
    char *b[7] = { "星期一","星期二","星期三","星期四","星期五","星期六","星期日" };//修改
    //char b[7]={'星期一','星期二','星期三','星期四','星期五','星期六','星期日'}; 
    int year, month, day, t, s, a;
                                                   //char r = { '\0' }; 修改
    printf("请输入日期:");
    scanf("%d.%d.%d", &year, &month, &day);
    t = ((year - 2001) + (year - 2001) / 4 + 1) % 7;
    s = m[month];                                  //s = m[month - 1];  修改
    a = (s + day) % 7;
    printf("%d.%d.%d是", year, month, day);
    if (t + a - 1 <= 7) { puts(b[t + a - 1]); };  //putchar(b[t + a - 1]); 修改
    if (t + a - 1 > 7)  { puts(b[t + a - 7]); };  //putchar(b[t + a - 7]); 修改
    return 0;
}

char b[7]={'星期一','星期二','星期三','星期四','星期五','星期六','星期日'};
这句是错误的,char只能是一个字符,你这个是字符串了。