應同學的要求,寫了個日曆,輸入年份,輸出12個月份的日曆表,代碼如下 :
#include<stdio.h>
bool isLeap(int year)
{
if((year%4==0 && year%100!=0) || (year%400==0))
return 1;
else
return 0;
}
void printCalendar(int year)
{
int day=1,days=0,week=0;
int months[12]={31,28,31,30,31,30,31,31,30,31,30,31};
//得到從公元1900年01月01日到當前年份的1月1日之間的天數
for(int i=1900;i<year;i++)
{
days+=365;
days+=isLeap(i);//總天數修正
}
months[1]+=isLeap(year);//修正二月天數
week=days%7;
//循環輸出12個月份日曆表
for(int i=0;i<12;i++)
{
//得到從二月份開始當前月份第一天的星期
if(i>0)
{
days+=months[i-1];
week=days%7;
}
printf("%d月:\n",i+1);
//每月的表頭
printf("週一\t週二\t週三\t週四\t週五\t週六\t週日\n");
//製表符 空出每個月第一天之前的位置
for(int j=0;j<week%7;j++) printf("\t");
//對當前月份,依次輸出具體日期
for(int j=1;j<=months[i];j++)
{
printf("%d\t",day);
//一行輸出七天後換行
if((week+day)%7==0) printf("\n");
day++;
}
printf("\n\n");
day=1;
}
}
int main()
{
int year;
scanf("%d",&year);
//打印日曆
printCalendar(year);
return 0;
}