admin 发表于 2022-5-17 12:19:06

万年历c代码

#include<stdio.h>
#include<stdlib.h>
int main( )
{
int Year,Month;      //定义年、月
int FirstDay_Year,FirstDay_Month;   //某年的第一天是星期几,某年某月的第一天是星期几(范围是0~6,其中0代表星期日)
int IsLeapYear;      //判断是否是闰年
int i,d,y;         //定义 i,d,y
char YN;         //定义YN,即yes,no

int Days={0,31,28,31,30,31,30,31,31,30,31,30,31};      
                //定义数组变量Days,表示每个月有多少天,初始定义2月有28天
printf(" C++语言简单万年历\n");    //输出标题

flag:
printf("请输入年<0000~9999>: ");    //提示输入年(0000~9999)
scanf("%d",&Year);       //将输入值赋予Year

printf("请输入月份<1~12>: ");    //提示输入月份(1~12)
scanf("%d",&Month);       //把输入的月份赋值给Month

y=Year;//将Year的值赋予y
FirstDay_Year=5*(y/4)+(y%4)-(y/100)+(y/400);//蔡勒公式(计算某年的第一天是星期几)
printf("FirstDay_Year = %d \n", FirstDay_Year);

IsLeapYear=(y%4==4&&y%100!=100||y%400==0)?1:0;
            //判断是否为闰年
Days=(IsLeapYear==1)?29:28;    //闰年二月29天,非闰年二月28天
for(i=1,d=0;i<Month;i++) //进入循环
d=d+Days;
FirstDay_Month=(d+FirstDay_Year)%7;   //当月的第一天是星期几(0代表星期日)

printf("\n****************************************************\n");
printf("\t\t公元 %d 年 %2d 月",Year,Month);//输出年月
printf("\n****************************************************\n");
      
printf("   星期日 星期一 星期二 星期三 星期四 星期五 星期六\n");
            //输出星期表头
for(i=0;i<FirstDay_Month;i++)
printf("%7c",' ');      //当某月的第一天不是星期日时打印空格占位

for(d=1;d<=Days;d++)   //循环,从每个月的第一天开始打印
{
printf("%7d",d);
if(((d+FirstDay_Month)%7)==0 && d<Days)
   printf("\n");      //当输出了星期六而且还未输出所有天数时,换行
}
printf("\n****************************************************\n");
printf("\n");
printf("是否继续(Y/N)? ");
scanf("%c",&YN);
scanf("%c",&YN);
if(YN=='Y' || YN=='y')
goto flag;
}

页: [1]
查看完整版本: 万年历c代码