当前位置: 代码迷 >> C语言 >> 求助~~~~~帮忙看看检查一下~~~
  详细解决方案

求助~~~~~帮忙看看检查一下~~~

热度:171   发布时间:2005-12-27 18:10:00.0
求助~~~~~帮忙看看检查一下~~~

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();
}


----------------解决方案--------------------------------------------------------

恩...多谢知道..小弟在这里谢啦~~~~~~~~~


----------------解决方案--------------------------------------------------------