注册 登录
编程论坛 C++教室

c++编程,求助

diwuwei 发布于 2016-04-24 15:57, 5357 次点击
1990年元旦是星期一,1990年的7月1日是星期几?
10 回复
#2
湘妃竹2016-04-24 19:05
C++作业吗?明天也要写这个了,可是还没有头绪
#3
c9742884322016-04-24 21:24
回复 楼主 diwuwei
#include<iostream.h>

main()
{   int a=1990,b=1,c=1,d=1;
    cout<<a<<"年"<<b<<"月"<<c<<"日,星期"<<d<<endl;
    while(1)
    {
    cin>>a>>b>>c;
    if(b==111) return;
    d=((a-1990)*360+(b-1)*31+c)%7;
    if( ((a-1990)*12+b)>3 )  d=( (a-1990)*12+b-3-( (a-1990)*12+b-3)%36 )/36+1+d;
    if(b>2) d=d-2;  
    if(b>4) d--;
    if(b>6) d--;
    if(b>9) d--;

   
    cout<<a<<"年"<<b<<"月"<<c<<"日,星期"<<d<<endl;

    }


   
}
#4
c9742884322016-04-24 21:25
试试  看  结果对么   也新手  不对商量改改
#5
仰望星空的2016-04-24 22:17
如果b=2呢,第一个d的式子对不?
#6
rjsp2016-04-25 08:26
((31+28+31+30+31+30)+1)%7 = 0
结果是 星期日
#7
c9742884322016-04-25 09:52
回复 5楼 仰望星空的
只试了  1990 2 1   。1991 2 1  我在试试去  
#8
c9742884322016-04-25 09:54
回复 6楼 rjsp
OK   我去改下  在看看  哪还不行  
#9
yangfrancis2016-04-25 21:12
#include<iostream>
#include<graphics.h>
using namespace std;
void DayPass(SYSTEMTIME &t)
{
    if(t.wDayOfWeek==7)
        t.wDayOfWeek=1;
    else
        t.wDayOfWeek++;
    switch(t.wDay)
    {
    case 30:
        switch(t.wMonth)
        {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            t.wDay++;break;
        case 4:
        case 6:
        case 9:
        case 11:
            t.wDay=1;t.wMonth++;break;
        }
        break;
    case 31:
        switch(t.wMonth)
        {
        case 12:
            t.wYear++;t.wMonth=1;t.wDay=1;break;
        default:
            t.wMonth++;t.wDay=1;break;
        }
        break;
    case 28:
        switch(t.wMonth)
        {
        case 2:
            if(t.wYear%4!=0)//common year
            {
                t.wDay=1;t.wMonth=3;
            }
            else
                t.wDay=29;
            break;
        default:
            t.wDay=29;break;
        }
        break;
    case 29:
        if(t.wMonth==2)
        {
            t.wDay=1;t.wMonth=3;
        }
        else
            t.wDay=30;
        break;
    default:
        t.wDay++;
    }
}
int main()
{
    SYSTEMTIME time;
    time.wYear=1990;time.wMonth=1;time.wDay=1;time.wDayOfWeek=1;
    while(time.wYear!=1990||time.wMonth!=7||time.wDay!=1)
       DayPass(time);
    cout<<time.wYear<<'/'<<time.wMonth<<'/'<<time.wDay<<"星期"<<time.wDayOfWeek<<endl;           //算出是星期日
    return 0;
}
#10
c9742884322016-04-26 16:47
回复 9楼 yangfrancis
ok

 我也改了下之前那个
#11
彼岸花殇2016-05-04 16:04
有更简便的方法么
1