c语言年历编程

2024-11-03 00:58:46
推荐回答(2个)
回答(1):

#include

static int year;
static int weekDay;

bool isLeapYear(int y)  //判断是否是闰年
{
  return(y%4==0&&y%100!=0||y%400==0); //闰年的条件就是年份同时能被4和100整除或
          明春                            // 者能被400整除
}

long firstDayOfYear(int y)   //求出输入的那年第一天是星期几
{
   long n;
   n=y*365;
   for(int i=1;i   if(isLeapYear(i)) 
   n+=1;
   return n%=7;
}

void printHead(int m)  //打印每个月的标题
{
   if(m<10)
 printf("    %d月   日   一   二   三   四   五   六\n",m);
   else 
 printf("   %d月   日   一   二   三   四   五   六\n",m);
   printf("       ");
   for(int i=0;i    printf("     ");
 }

int daysOfMonth(int m)  // 判断每个月有多少天
{
   switch(m)
   {
  激轿耐     case 1:
       case 3:
       case 5:
       case 7:
       case 8:
       case 10:
       case 12: return 31;
       case 4:
       case 6:
       case 9:
       case 11: return 30;
       case 2:if(isLeapYear(year)) 
  return 29;
               else 
   return 28;
     }
     return 0;
}

void printMonth(int m)  //打印每月的日历
{
   printHead(m);
   int days=daysOfMonth(m);
   for(int i=1;i<=days;i++)
   {
      if(i<10) 
     printf("    %d",i);
      else 
 printf("   %d",i);
      weekDay=(weekDay+1)%7;
      if(weekDay==0)
  {
        printf("\n");
        printf("       ");
       }
    }
 }

void main()  //主程序入口,接收输入的年份,调用函数打印日历
{
    int y;
printf("请输入年份:");
    scanf("%d",&y);
    year=y;
    if(year<1)
{
       printf("输入年份不能小于1\n");
       return;
     }
     weekDay=(int)firstDayOfYear(year);
     printf("                   %d年\n",year);
     printf("   ========================================\n");
     for(int i=1;i<=12;i++)
 {
       printf("\n");
       printMonth(i);
       printf("\n");
     }
}

可以显示公元1世纪以后的所有年份的日历,第2和第3问其实都包含帆旦在第1问里,程序看懂了自然也就会了(话说为什么不能上传附件?)

回答(2):

浙江浙江浙江