21xrx.com
2025-03-23 14:00:31 Sunday
文章检索 我的文章 写文章
万年历代码C语言实现
2023-06-19 08:33:56 深夜i     65     0
C语言 万年历 代码 年份 月份 闰年 公式 天数 表头 格式

万年历是人们生活中常用的一种时间工具,C语言作为一种编程语言,可以通过编写程序实现万年历的功能。下面介绍一种使用C语言编写万年历代码的实现方法。

首先,我们需要确定程序的功能。万年历程序的主要功能是显示任意一个年份和月份的日历,以及判断是否为闰年。根据这个功能,我们可以先写出以下部分代码:

#include
int main()
{
  int year, month;
  printf("请输入年份和月份(用空格隔开):\n");
  scanf("%d %d", &year, &month); //读取用户输入的年份和月份
  printf("日 一 二 三 四 五 六\n"); //打印表头
  // 下面写代码实现日历功能
  return 0;
}

在这段代码中,我们初始了两个变量,year和month,用来存储用户输入的年份和月份。然后,通过scanf函数读取用户输入的年份和月份,并打印出表头。接下来,我们需要根据用户输入的年份和月份打印相应的日历。

以下是完整的C语言万年历代码实现:

#include
#include
int main()
{
  int year, month, i, day, m, y, sum;
  printf("请输入年份和月份(用空格隔开):\n");
  scanf("%d %d", &year, &month); //读取用户输入的年份和月份
  printf("Sun Mon Tue Wed Thu Fri Sat\n"); //打印表头
  if (month >= 1 && month <= 12) //判断月份是否正确
  {
    if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) //31天的月份
    
      day = 31;
    
    else if (month == 4 || month == 6 || month == 9 || month == 11) //30天的月份
    
      day = 30;
    
    else  //判断2月份天数
    {
      if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
      
        day = 29; //闰年2月29天
      
      else
      
        day = 28; //非闰年2月28天
      
    }
    // 根据公式计算出m和y的值,其中m=13转化成1月,14转化成2月,y为年数前两位。
    m = month == 1 ? 13 : month == 2 ? 14 : month;
    y = year % 100;
    sum = y + y / 4 + 5 * (year / 100) / 4 + (13 * (m + 1)) / 5 + 1; 
    sum = sum % 7; //利用公式计算出当前月份的1号是星期几
    for (i = 1; i <= sum; i++) //打印空格占位
    {
      printf("  ");
    }
    for (i = 1; i <= day; i++) //打印日历
    {
      printf("%3d ", i);
      if ((i + sum) % 7 == 0)
      {
        printf("\n");
      }
    }
  }
  else
  {
    printf("您输入的月份有误!\n");
  }
  return 0;
}

上面这段代码中,我们使用了if和else结构来判断每个月的天数,并采用了一个公式,利用年份和月份计算出当前月份1号是星期几。然后我们使用for循环打印出日历并对齐格式。

最后,根据我们编写的万年历代码,可以生成以下几个

  
  

评论区

请求出错了