C++难题,求达人帮忙做下,自己拿到恼火啊

来源:百度知道 编辑:UC知道 时间:2024/05/24 11:30:00
编写一个程序,只要输入年月日,就能回答那天是星期几。
[实验提示]
1、 已知公元1年1月1日是星期一
2、 算法提示:如果输入的是2006年3月12日,计算方法是
(1) 先计算从公元0001年初(0001-1-1)到2005年末(2005-12-31)共多少天,注意其中有闰年,闰年是366天,平年是365天。闰年的判断条件满足(见教材例3.8题):
(( year%4==0 && year%100!=0 )!!(year%400==0))
(2) 然后再计算2006年1月1日到2006-3-12是多少天。注意同样判断本年度是否闰年,即二月份是28天还是29天。
(3) 上述两部分相加即从公元0001年初(0001-1-1)到2006年末(2006-3-12)的天数,用该天数模7(total%7)即得到星期数。
2、用户多次循环输入数据并计算可采用while语句实现:
//首先输入三个数据:
cout<< "please enter year month day: "
cin>>year>> month>>day; //首先输入三个数: 年 月 日
while(year!= 0 && month!=0 && month!= 0)
{
…… //具体计算语句
//本次循环结束前再次输入三个数据(年 月 日),为下次循环计算做准备
cout<< "please enter year month day: "
cin>>year>> month>>day;
}

[测试数据]
1、1年1月1日是星期一
2、2年1月1日是星期二
3、用上机日期
4、2000年1月1日是星期六
看不懂,哪位大人继续啊,高分啊··我还可以补充10分
老大我要C++编程的,你帮我整吧,谢谢呢

/*能求 0001年01月01日(含0001年01月01日这一天也可求)以后的*/
//C++上运行正常 y(年), m(月), d(日)
#include"iostream.h"
void main()
{
while(1)
{
int total=0,y,m,d,j,k,i;
int a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31},
b[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
char c[7][3]={"日","一","二","三","四","五","六"};
cout<<"请输入年,月和日:";
cin>>y>>m>>d;
for(j=1;j<y;j++)
{
if((j % 400 == 0)||(j % 4 == 0)&&(j % 100 != 0))
total+=366;
else total+=365;
}
if((y % 400 == 0)||(y % 4 == 0)&&(y % 100 != 0))
{
for(i=0;i<m;i++)
{
total+=a[i];
}
}
else
{
for(i=0;i<m;i++)
{
total+=b[i];
}
}
k=(total+d)%7;
cout<<"\n"<<y<<"年"<<m<<"月"<<d<