給定某年某月,輸出該月日曆 程式設計珠璣

2021-06-20 00:01:30 字數 2398 閱讀 1731

給定兩個日子計算相差天數

給定某個日子,返回在一周的第幾天

,接下來還有乙個給定某年某月,輸出該月日曆;

其實思想很簡單,都是與1900-1-1相減,這樣得到每月的第一天星期幾,這樣便於輸出第一行; 如:

日  一  二  三  四  五  六

1 2 3 4

接下來對下面的進行一行一行的輸出就簡單了,主要思想呢,就是這樣;

printf(" 日  一  二  三  四  五  六 \n");

if(temp < 6) //把該月的第一行輸出

temp = 7 - days - 1;

i = 1;

while(i <= temp)

printf("\n");

}

上述是將第一行輸出,當然,如果1號是星期天的話,我們直接把它當做整的輸出了;

如果本月是2月,進行是否是閏年判斷:

if(month == 2)

mon[1] += isleapyear(years);

最後將本月後面日期輸出即可:

temp = 7 - days;

while(temp <= mon[month - 1])

由於5號與10號佔據的位置不一樣,所以,對於小於10號的與10後及以後的日子輸出的格式差乙個空格

另外,每過七天就輸出換行;

如2023年12月:

萬年曆上的由星期一開始的...不過效果是一樣的,大家有興趣,做乙個和萬年曆一樣的也可以...

如2023年2月:

#include int isleapyear(int year) //是否是閏年

int sum(int year, int month, int day)

; int sum = (year - 1) * 365; //自公元1年來的天數

int i;

sum += (year - 1) / 4 + 1; //能被4整除的都加上

sum -= (year - 1) / 100 + 1; //其中被100整除的不是閏年

sum += (year - 1) / 400 + 1; //實際上能被400整除的即為閏年

for(i = 0; i < month - 1; ++i) //將本年的剩下日期加上

sum += mon[i];

if(isleapyear(year) == 1 && month > 2) //本年是否閏2月

++sum;

sum += day; //本月的日子加上

return sum;

}void print(int years, int month, int days) //days是減去星期一的取餘

; int temp = days;

int i;

if(month == 2)

mon[1] += isleapyear(years);

printf(" 日 一 二 三 四 五 六 \n");

if(temp < 6) //把該月的第一行輸出

temp = 7 - days - 1;

i = 1;

while(i <= temp)

printf("\n");

}temp = 7 - days;

while(temp <= mon[month - 1])

}int main()

小工程可見:o(∩_∩)o歡迎大牛指點...

給定某年某月,輸出該月日曆 程式設計珠璣

繼 給定兩個日子計算相差天數 和給定某個日子,返回在一周的第幾天 接下來還有乙個給定某年某月,輸出該月日曆 其實思想很簡單,都是與1900 1 1相減,這樣得到每月的第一天星期幾,這樣便於輸出第一行 如 日 一 二 三 四 五 六 1 2 3 4 接下來對下面的進行一行一行的輸出就簡單了,主要思想呢...

獲取某年某月天數 js

var years new date getfullyear var month new date getmonth 1 var days getdaysinmonth years,month 得到指定某月的全部天數,可以不用去判斷閏年還是平年 function getdaysinmonth yea...

JS判斷某年某月有多少天

以前寫網頁的時候,經常碰到選擇日期的問題,其實就是 判斷某年某月有多少天。一般的做法是先判斷是幾月份,然後決定有多少天 一般用switch 如果是2月的話,還得判斷選擇的年份是不是閏年,再決定是28天還是29天。這樣是乙個很規矩的做法,而且也很符合邏輯。但是,如果是為了達到目的的話,是不用這麼麻煩的...