c语言 输入日期计算星期几 已知1900年1月1号是周一 小弟输入2009年7月前的日期都出结果 求高手调试指点。

#include<stdio.h>
long int ri(long int n,long int y,long int r);
long int rui(long int n);
long int main()
{ long int n,y,r;
printf("输入年 月 日");
scanf("%d%d%d",&n,&y,&r);
switch (ri(n,y,r))
{
case 0:printf("星期天\n");break;
case 1:printf("星期一\n");break;
case 2:printf("星期二\n");break;
case 3:printf("星期三\n");break;
case 4:printf("星期四\n");break;
case 5:printf("星期五\n");break;
case 6:printf("星期六\n");break;
}
return 0;
}
long int ri(long int n,long int y,long int r)

{
long int rui(long int n);
long int t,i,a=0,b[12]={31,28,31,30,31,30,31,31,30,31,30,31},j;
if(n<1900)
{
for (i=1899;i>=n;i--)
a=rui (i)+a;
if (y>2&&rui (n))
{
j=1;
for(i=0;i<--y;i++)
j=j+b[i];
}
else
{
j=0;
for(i=0;i<--y;i++)
j=j+b[i];
}
j=j+r;
t=(1900-n)*365+a-j;
t=t%7;
t=6-t;
}

else
{
for (i=1900;i<n;i++)
a=a+rui(i);
if (y>2&&rui (n))
{
j=1;
for(i=0;i<--y;i++)
j=j+b[i];
}
else
{
j=0;
for(i=0;i<--y;i++)
j=j+b[i];
}
t=(n-1900)*365+a+j+r;
t=t%7;
}
return t;

}
long int rui(long int y)
{
if((y%4==0)&&(y%100!=0)||(y%400==0))
return 1;
return 0;
}
输入2011年12月16应输出星期五却出星期六

#include<stdio.h>
long int ri(long int n,long int y,long int r);
long int rui(long int n);
long int main()
{ long int n,y,r;
printf("输入年 月 日");
scanf("%d%d%d",&n,&y,&r);
switch (ri(n,y,r))
{
case 0:printf("星期天\n");break;
case 1:printf("星期一\n");break;
case 2:printf("星期二\n");break;
case 3:printf("星期三\n");break;
case 4:printf("星期四\n");break;
case 5:printf("星期五\n");break;
case 6:printf("星期六\n");break;
}
return 0;
}
long int ri(long int n,long int y,long int r)

{
long int rui(long int n);
long int t,i,a=0,b[12]={31,28,31,30,31,30,31,31,30,31,30,31},j=0;
if(n<1900)
{
for (i=1899;i>=n;i--)
a=rui (i)+a;

for(i=0;i<y-1;i++)
j+=b[i];
if (rui(n))
j = j+1;
t=(1900-n)*365-a-j-r;
t=t%7;
t = (7-t)%7;

}

else
{
for (i=1900;i<n;i++)
a=a+rui(i);

for(i=0;i<y-1;i++)
j+=b[i];
if (rui(n))
j = j+1;
t=(n-1900)*365+a+j+r;
t=t%7;
}
return t;

}

long int rui(long int y)
{
if((y%4==0)&&(y%100!=0)||(y%400==0))
return 1;
else
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-16
试了,没问题。
第2个回答  2011-12-17
有什么问题?正常运行
相似回答