C 程式設計若已知具體某一天(年 月 日,如為星期幾,利用該已知資訊分

2022-06-10 06:37:15 字數 3876 閱讀 6758

1樓:匿名使用者

1.查查公元元年1年1月1日是星期幾2.懂得計算某一年是否閏年3.根據你輸入的年份,結合閏年演算法,計算輸入年份的元旦離公元元年元旦有幾天,並根據這個計算輸入年份元旦是星期幾

4.計算輸入年份是否閏年

5.按月份,輸出月曆,12個就是年曆了,或者說是這年的日曆。

2樓:匿名使用者

#include

using namespace std;

class date

//判斷這一年是不是閏年

static bool isleapyear(int year)void setdate(int y,int m,int d)void outputdatestring() const//通過另乙個有有效的星期部分的日期物件,計算今天是星期幾

else

*///測試用//

cout<<"請輸入年、月、日、星期幾(用數字表示,0-星期日,1-星期一,以此類推):";

cin>>y>>m>>d>>w;

date d1(y,m,d,w);

cout<<"請輸入年、月、日:";

cin>>y>>m>>d;

date d2(y,m,d);

d2.calculateweek(d1);

d2.outputdatestring();

return 0;}

1.c++ 給出年、月、日,計算該日是該年的第幾天。

3樓:罡風皓月

萬年星期歷公式

該公式是根據公曆的基本性質編制的,年份不限,準確率為100%,

公式如下: (年+年/4+年/400-年/100+月日天數-1)/7=xx……餘星期幾。

其中: (年+年/4+年/400-年/100)/7=xx……餘數為該年1月1日星期數。

注:分數商均取整數;

月日天數: 平年 ——潤年

一月為: 0+日數, 0+日數,

二月為: 3+日數, 3+日數,

三月為: 3+日數, 4+日數,

四月為: 6+日數, 0+日數,

五月為: 1+日數, 2+日數,

六月為: 4+日數, 5+日數,

七月為: 6+日數, 0+日數,

八月為: 2+日數, 3+日數,

九月為: 5+日數, 6+日數,

十月為: 0+日數, 1+日數,

十一為: 3+日數, 4+日數,

十二為: 5+日數, 6+日數,

注:月日天數為前各月累積7餘數+當月天數,可查算,也可心算。

例:2023年1月1日是星期幾?

(年+年/4+年/400-年/100)/7

=(1000+1000/4+1000/400-1000/100)/7

=(1000+250+2-10)/7

=1242/7

=xx……3

即該年1月1日為星期三。

例:2023年(平年)10月1日為星期幾?

(年+年/4+年/400+年/100+月日天數-1)/7

=(2005+2005/4+2005/400-2005/100+(0+1)-1)/7

=(2005+501+5-20+1-1)/7

=2491/7

=xx……6

即該年10月1 日為星期六。

還有一種方法:

最常見的公式: w = [y-1] + [(y-1)/4] - [(y-1)/100] + [(y-1)/400] + d y是年份數,d是這一天在這一年中的累積天數,也就是這一天在這一年中是第幾天。 最好用的是蔡勒公式:

w = [c/4] - 2c + y + [y/4] + [13 * (m+1) / 5] + d - 1 c是世紀數減一,y是年份後兩位,m是月份,d是日數。1月和2月要按上一年的13月和14月來算,這時c和y均按上一年取值。 兩個公式中的[...

]均指只取計算結果的整數部分。算出來的w除以7,餘數是幾就是星期幾。如果餘數是0,則為星期日。

我們來算2023年5月1日的星期,顯然c=20,y=4,m=5,d=1,代入蔡勒

公式,有:

w = [20/4] - 40 + 4 + 1 + [13 * (5+1) / 5] + 1 - 1

= -15.

注意負數不能按習慣的餘數的概念求餘數,只能按數論中的餘數的定義求餘。為了方便

計算,我們可以給它加上乙個7的整數倍,使它變為乙個正數,比如加上70,得到55。

再除以7,餘6,說明這一天是星期六。

4樓:匿名使用者

樓上的,樓主要的是c++語言寫的程式!

用c語言編修已知2023年1月1日是星期二,輸入任意乙個日期計算出該天是星期幾

5樓:業聽蓮

計算機日期計算是以乙個基準值進行的(好像是2023年1月1號),算出你輸入的日期平年和閏年距離2023年有多少個,然後得到天數再除以7.

6樓:匿名使用者

#include

#include

int noleap_mon[13] = ;

int leap_mon[13] = ;

bool isleap(int year)int countdays(int year, int mon, int day)

if(isleap(year)) elsetotal = - total;

} else

int main()

7樓:

看著就不想編 唉 太墮落了

問:c++程式設計: 1,輸入年月日,輸出距離今天還有多少天,星期幾,是否是公曆日。假定輸入的年份

8樓:匿名使用者

#define _crt_secure_no_warnings

#include

#include

using namespace std;

// 判斷星期幾

int getweekday(const int year, const int yday)

// 是否閏年

bool isleapyear(const int year)

// 獲取當天是一年中的第幾天

int getyearday(const int year, const int month, const int mday)

}yday += mday;

return yday;

}// 計算兩個日期的天數差(假設date1小於date2)

nday += (yday2 - yday1);

return nday;

}// 公曆節日,隨便弄15個。

const char* festivals = ;

char *weekdays = ;

void testdate1()

;sprintf(szdate, "%d,%d", month, day);

for (int i = 0; i < 30; i+= 2)}}

void testdate2()

int main()

} while (op != 3);

system("pause");

return 0;}

一道C程式設計題一道C程式設計題

include using namespace std class dif dif int lw,int hi 建構函式,用引數lw和hi分別初始化low和high int isdiff int y void process void show int dif isdiff int y 判斷引數y的...

C語言程式設計題目,乙個C語言程式設計題目

include int main 先乘以10000得到一bai個整數。需要du判斷是正數還是zhi 負數,執行 5還 或是 5,這dao個整數再專除以10000,即可屬得到你要求的結果了。include include double double3 double x int main double ...

已知三點求圓的方程的c語言程式設計,已知三點如何求圓的方程

已知三點求圓的 get circle 函式 x1,y1為第一個點的座標,以此類推 r為求出的半徑,x0,y0為圓心座標 呼叫函式之前應先檢查三點是否共線 否則會彈出被零除的錯誤 include void get circle double x1,double y1,double x2,double ...