繼
給定兩個日子計算相差天數
和給定某個日子,返回在一周的第幾天
,接下來還有乙個給定某年某月,輸出該月日曆;
其實思想很簡單,都是與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天。這樣是乙個很規矩的做法,而且也很符合邏輯。但是,如果是為了達到目的的話,是不用這麼麻煩的...