3)已知1990年1月1日是星期一.现要求根据输入的年月日输出该天是星期几.
为什么我做的有误差啊..哪位大哥帮我看看(在2005年可以别的年就不可以)
#include<stdio.h>
main()
{
int a[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}},
b[2]={365,366};
int d,n,y,r,h=0,i=1,e;
long sum=0;
printf("qing shu ru ni yao de nian fen\n",n);
scanf("%d",&n);
printf("qing shu ru ni yao de yue fen\n",y);
scanf("%d",&y);
printf("qing shu ru ni yao de ri qi\n",r);
scanf("%d",&r);
if (n>1900)
{for (d=1900;d<n;d++)
{if(d%4==0&&d%100!=0||d%400==0)
i=2;
sum+=b[i];
i=1;
}
}
else sum=0;
if(n%4==0&&n%100!=0||n%400==0)
h=1;
sum+=r;
if(y!=1)
{
for(d=0;d<y-1;d++)
sum+=a[h][d];
}
e=(sum)%7;
printf("%d",e);
getch();
----------------解决方案--------------------------------------------------------
你定义了数组b[2]={365,366};
if (n>1900)
{for (d=1900;d<n;d++)
{if(d%4==0&&d%100!=0||d%400==0)
i=2;
sum+=b[i]; \\这里b[2]是什么东东呢
i=1;
}
}
----------------解决方案--------------------------------------------------------
b[2]={365,366};
这个是定义啊
这个程序没有错啊
就是在2005年内查没有问题
在别的年就有问题了
谁懂啊
----------------解决方案--------------------------------------------------------
怎么没有人来看~~~~~
郁闷
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
我将你的程序改动了一下,主要是把1990以后跟以前的年份分离,其实算法一样,同时注意i的值只能取0和1。
#include "stdio.h"
main()
{
int a[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}},
b[2]={365,366},
c[2]={-365,-366};
int d,n,y,r,h=0,i=0,e;
long sum=0;
printf("qing shu ru ni yao de nian fen\n",n);
scanf("%d",&n);
printf("qing shu ru ni yao de yue fen\n",y);
scanf("%d",&y);
printf("qing shu ru ni yao de ri qi\n",r);
scanf("%d",&r);
if(n>1990)
{
for (d=1990;d<n;d++)
{
if(d%4==0&&d%100!=0||d%400==0) i=1;
sum+=b[i];
i=0;
}
if(n%4==0&&n%100!=0||n%400==0)
h=1;
sum+=r;
if(y!=1)
{
for(d=0;d<y-1;d++)
sum+=a[h][d];
}
e=(sum)%7;
printf("%d",e);
}
else if(n<=1990&&n>=1900)
{
for (d=1900;d<n;d++)
{if(d%4==0&&d%100!=0||d%400==0)
i=1;
sum+=c[i];
i=0;
}
if(n%4==0&&n%100!=0||n%400==0)
h=1;
sum+=-r;
if(y!=1)
{
for(d=0;d<y-1;d++)
sum+=-a[h][d];
}
e=(-sum)%7;
printf("%d",e);
}
else sum=0;
getch();
}
----------------解决方案--------------------------------------------------------
恩...多谢知道..小弟在这里谢啦~~~~~~~~~
----------------解决方案--------------------------------------------------------