下面是代码,麻烦帮忙看看,我这个代码一直没有输出,不知道是哪里出问题了
#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只能是一个字符,你这个是字符串了。