⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calendar.cpp

📁 此代码就是万年历
💻 CPP
字号:
#include"stdio.h"
#include"math.h"


void main()
{

int year,month,date;	
int f(int year); //声明判断闰年函数
int weekday(int year, int month, int date); //声明计算星期几的函数
int g(int year,int month,int date);//声明求C:从元旦开始到这一天的天数的函数  
void print(int year);  //声明打印日历的函数


int sel;
char ch;
loop0:
{
   printf("(1) 查询某年某月某日是星期几\n");
   printf("(2) 查询某年是否是闰年\n");
   printf("(3) 打印某年的全年日历\n");
   printf("(4) 退出\n");
}
  scanf("%d",&sel);
if(sel==1)
{
loop1:
printf("请输入年月日(XXXX,XX,XX)\n");
scanf("%d,%d,%d",&year,&month,&date);



while(month==2 && ((f(year)==1 && date>29)||(f(year)==0 && date>28)))//对二月有无超过最大天数的判断
{
	printf("输入错误,请重新输入!\n");
goto loop1;
}





while((month==1||month==3||month==5||month==7||month==8||month==10||month==12) && date>31)
{
	printf("输入错误,请重新输入!\n");                   //对其他月份有无超过最大天数的判断              
goto loop1;                                   
}




while((month==2||month==4||month==6||month==9||month==11) && date>30)
{
	printf("输入错误,请重新输入!\n");                   //对其他月份有无超过最大天数的判断              
goto loop1;                                   
}













weekday(year,month,date);         //调用计算星期几的函数
printf("\n");
getchar();
scanf("%c",&ch);
printf("\n");
if(ch=='Y')
goto  
loop1;
else

goto 
 loop0;

}
else if(sel==2)
{
loop2:
int x;
printf("请输入要查哪一年?(XXXX)\n");
scanf("%d",&year);
x=f(year);          //调用是否为闰年的函数
if(x) printf("%d年是闰年,是否继续查询(Y/N)?\n",year);
else printf("%d年是平年,是否继续查询(Y/N)?\n",year);


getchar();
scanf("%c",&ch);
printf("\n");
if(ch=='Y')
goto 
 loop2;
else

goto  loop0;

}
else if(sel==3)
{
loop3:
printf("请输入要打印的年份(XXXX)\n");

print(year);//调用日历打印函数
printf("\n");
printf("是否继续打印(Y/N)?\n");
getchar();
scanf("%c",&ch);
printf("\n");
if(ch=='Y')
goto 
 loop3;
else


goto  loop0;

}

else
{
printf("是否要真的退出(Y/N)?\n");
getchar();
scanf("%c",&ch);

if(ch=='Y')return;
else

  goto 
     loop0;

}

}
/***************************************************************************************************/




int f(int year)   //闰年的判断的函数


{ int i;
  if (year%4==0&&year%100!=0||year%400==0) i=1;
  else i=0;
  return i;
}



/***************************************************************************************************/



int g(int year,int month,int date)              //求C:从元旦开始到这一天的天数的函数
{
 
int C;
int  j;
int sum;     

C=0;
sum=0;
int m1[12]={31,0,31,30,31,30,31,31,30,31,30,31};
 
if(f(year)) m1[1]=29;               //调用闰年的判断函数 
else m1[1]=28;
for(j=0;j<month-1;j++)
{


sum=sum+m1[j];

 }C=sum+date;
return(C);
}

/*****************************************************************************************************/



int  weekday(int year, int month, int date)    //计算星期几的函数  


{
int C;
int day;


int X=year;
C=g(year,month,date); 
                      //调用求C:从元旦开始到这一天的天数的函数
day=(X-1+(X-1)/4-(X-1)/100+(X-1)/400+C)%7;

if(day==0)      printf("%d年%d月%d日是星期天,是否继续查询(Y/N)?\n",year,month,date);
else if (day==1)printf("%d年%d月%d日是星期一,是否继续查询(Y/N)?\n",year,month,date);  
else if (day==2)printf("%d年%d月%d日是星期二,是否继续查询(Y/N)?\n",year,month,date);  
else if (day==3)printf("%d年%d月%d日是星期三,是否继续查询(Y/N)?\n",year,month,date);  
else if (day==4)printf("%d年%d月%d日是星期四,是否继续查询(Y/N)?\n",year,month,date);  
else if (day==5)printf("%d年%d月%d日是星期五,是否继续查询(Y/N)?\n",year,month,date);  
else if (day==6)printf("%d年%d月%d日是星期六,是否继续查询(Y/N)?\n",year,month,date);  


return(day);
}
/****************************************************************************************************/



void print(int year)    //年日历打印函数
{

int day,month;
	
int month_firstday;    //每个月的第一天

int i,j,k,m1[12]={31,0,31,30,31,30,31,31,30,31,30,31};

scanf("%d",&year);

if(f(year)) m1[1]=29;       //调用闰年的判断函数 

else m1[1]=28;

day=weekday(year,1,1);     //调用计算星期几的函数,计算某年一月一号是星期几  

printf("%d\n",year);

month=1;       //赋予初值

month_firstday=day+1;

for(i=1;i<13;i++)
{
printf("%d\n",month++);

printf("\t\n");

printf("\t0\t1\t2\t3\t4\t5\t6\n");     //"\t"是水平制表

printf("\tS\tM\tT\tW\tT\tF\tS\n");

for(j=1;j<=month_firstday;j++)

printf("\t");

for(k=1;k<=m1[i-1];k++)                   //打印每个月的每一天
{
printf("%d\t",k);
month_firstday++;
if(month_firstday>7)
{
month_firstday=1;
printf("\n");printf("\t");
}

}

printf("\n");
}

}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -