C语言;输入任意年月日,得出周几?

来源:百度知道 编辑:UC知道 时间:2024/05/27 08:18:22
以2000年 01月 02日 周7为基准点。
#include<stdio.h>
main()
{
int n,y,r,m,s,t=0,x;
scanf("%d%d%d",&n,&y,&r);
if(y=1) t=r;
if(y=2) t=31+r;
if(y>2)
{ t=t+31;
if((n%4==0)&&(n%100!=0)||(n%400==0))
{ t=t+29+r; }
else t=t+28+r;
for(s=3;s<y;s++)
{
if((s<8&&s%2==1)||(s>7&&s%2==0)) t=t+31;
else t=t+30;
}

} /* 相距天数总为T天 */
if(n>2000)
{
for(s=2000;s<n;s++)
{
if((s%4==0)&&(s%100!=0)||(s%400==0)) t=t+366;
else t=t+365;
}
x=(t-2)%7;
}
if(n<1999)
{
for(s=1999;s>n;s--)
{
if((s%4==0)&&(s%100!=0)||(s%400==0)) t=t+366;
else t=t+365;
}

#include"stdio.h"
struct Date
{
int year;
int month;
int day;
};

int f(int x)
{
if(x%4==0&&x%100!=0||x%400==0) return 366;
else return 365;
}

int isleap(int x)
{
if(x%4==0&&x%100!=0||x%400==0) return 1;
else return 0;
}

int s(int a,int b,int c,int d,int year)
{
int array[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};
int cha=0,i;
if(a<c||a==c&&b<d)
{
for(i=a;i<c;i++)
cha+=array[isleap(year)][i-1];
cha+=d-b;
return cha;
}
else
{
for(i=c;i<a;i++)
cha+=array[isleap(year)][i-1];
cha+=b-d;
return -cha;
}
}
int tianshu(struct Date a,struct Date b)//计算两个日期相差的天数
{
int i,tian=0;
if(a.year<b.year)
{
for(i=a.year;i<b.year;i++)
tian+=f(i);
tian+=s(a.month,