#include<stdio.h>
/*1900-01-01:星期一,求往后的某年某月某日为星期几*/
#define END 5 //控制程序执行次数
int main()
{
int run=0; //用来控制go to语句执行次数
Again: //go to 语句标签
int leap(int year,int month); //声明计算经历闰年闰月次数的函数
int count=0; //存放经历闰年闰月的次数
int n=0; //存放相距1900年共经历多少个年头
int sum_day=0; //存放输入的年份相距1900年元旦的天数
int day=0; //日子
int days; //存放相距1900年元旦共经历的天数
int y,m,d,w;
scanf("%d-%d-%d",&y,&m,&d); //输入格式样例:2004-01-01
n=y-1900;
count=leap(y,m); //调用leap函数
sum_day=n*365+count;
switch(m-1)
{
case 11:day+=30;
case 10:day+=31;
case 9:day+=30;
case 8:day+=31;
case 7:day+=31;
case 6:day+=30;
case 5:day+=31;
case 4:day+=30;
case 3:day+=31;
case 2:day+=28;
case 1:day+=31;
case 0:{ day+=0;
days=day+d+sum_day; //计算经历的总天数
w=(days % 7); //总天数与7求余,余几则是星期几
if(w==0) w+=7; //余0则是星期日
printf("%d-%d-%d是星期:%d\n\n",y,m,d,w);
}break;
default :printf("输入数据有误");break;
}
run+=1;
if(run<END) goto Again; //run<END的取值则程序跳转至标签处
return 0;
}
int leap(int year,int month) //定义计算经历闰年闰月次数的函数
{
int i,count=0;
for(i=1900;i<=year;i++)
if((i%4==0&&i%100!=0)||i%400==0)
count++;
if(((year%4==0&&year%100!=0)||year%400==0)&&month<3)
count-=1; //若输入的年份刚好是闰年且月份小于3则经历次数应当减去1
return(count);
}
/*1900-01-01:星期一,求往后的某年某月某日为星期几*/
#define END 5 //控制程序执行次数
int main()
{
int run=0; //用来控制go to语句执行次数
Again: //go to 语句标签
int leap(int year,int month); //声明计算经历闰年闰月次数的函数
int count=0; //存放经历闰年闰月的次数
int n=0; //存放相距1900年共经历多少个年头
int sum_day=0; //存放输入的年份相距1900年元旦的天数
int day=0; //日子
int days; //存放相距1900年元旦共经历的天数
int y,m,d,w;
scanf("%d-%d-%d",&y,&m,&d); //输入格式样例:2004-01-01
n=y-1900;
count=leap(y,m); //调用leap函数
sum_day=n*365+count;
switch(m-1)
{
case 11:day+=30;
case 10:day+=31;
case 9:day+=30;
case 8:day+=31;
case 7:day+=31;
case 6:day+=30;
case 5:day+=31;
case 4:day+=30;
case 3:day+=31;
case 2:day+=28;
case 1:day+=31;
case 0:{ day+=0;
days=day+d+sum_day; //计算经历的总天数
w=(days % 7); //总天数与7求余,余几则是星期几
if(w==0) w+=7; //余0则是星期日
printf("%d-%d-%d是星期:%d\n\n",y,m,d,w);
}break;
default :printf("输入数据有误");break;
}
run+=1;
if(run<END) goto Again; //run<END的取值则程序跳转至标签处
return 0;
}
int leap(int year,int month) //定义计算经历闰年闰月次数的函数
{
int i,count=0;
for(i=1900;i<=year;i++)
if((i%4==0&&i%100!=0)||i%400==0)
count++;
if(((year%4==0&&year%100!=0)||year%400==0)&&month<3)
count-=1; //若输入的年份刚好是闰年且月份小于3则经历次数应当减去1
return(count);
}