寫這篇博客的目的是為了寫一份作業,要求是要畫日歷表,所以為了完成這個作業,我就寫了這個程序。
功能如下:
1,查詢某天是星期幾
2,給出年和月,把該月的日歷表畫出來
就是如上兩個功能
值得一提的是,我的代碼實現了上述兩個功能,但是不是最優化的,因為我是用我上一次的代碼重構的這個程序。所以大家就拿著使就好了,至於想看懂的話,真的挺費勁的,因為我也懶得改了。。。
好吧,給上代碼
#include
#include
using namespace std;
int num1[12] = {31,29,31,30,31,30,31,31,30,31,30,31};
int num2[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
int frontday(int year,int month,int day){ //計算這年過了多少天了
int sum=0;
if((year%100!=0 &&year%4==0) || year%400==0){
for(int i=0;i1){
sum = num1[month1-1]-day1+day2;
for(int i=month1+1;i<=month2-1;i++){
sum+=num1[i-1];
}
return sum;
}
}
else{
if(month1==month2) return day2-day1;
if((month2-month1)==1){
return num2[month1-1]-day1+day2;
}
if((month2-month1)>1){
sum = num2[month1-1]-day1+day2;
for(int i=month1+1;i<=month2-1;i++){
sum+=num2[i-1];
}
return sum;
}
}
}
int weekday(int year1,int year2,int month1,int month2,int day1,int day2){
int sum=0; //以下分類討論計算不同年之間天數
if((year2-year1)<0) cout<<"應該先輸入小的年份,輸入錯誤";
if((year2-year1)==0){
sum = JudgeMonthDay(year1,month1,month2,day1,day2);
}
if((year2-year1)==1) sum = backday(year1,month1,day1)+frontday(year2,month2,day2);
if((year2-year1)>1){
sum = backday(year1,month1,day1)+frontday(year2,month2,day2);
for(int i=year1+1;i<=year2-1;i++){
sum+=isyear(i);
}
}
int temp;
if((sum+1)%7==0) temp = 7;
else temp = (sum+1)%7;
return temp;
}
void main(){
int k;
cout<<"輸入1進入查詢功能,查詢某天的信息"<>k;
if(k==1){
cout<<"請輸入您想要查找的日期,分別為年月日,都用空格隔開"<>year2>>month2>>day2;
cout<<"您查詢的日期是星期"<>year2>>month2;
int pos;
if((year2%4==0&&year2%100!=0) ||year2%400==0){
pos = num1[month2-1];
}
else{
pos = num2[month2-1];
}
cout<
使用截圖: