21xrx.com
2024-12-27 04:47:25 Friday
登录
文章检索 我的文章 写文章
C++万年历程序设计
2023-07-05 05:23:36 深夜i     --     --
C++ 万年历 程序设计 日期计算 算法优化

C++语言是一种非常重要的编程语言,它在各个领域都有广泛的应用。然而,对于初学者来说,学习C++并不是一件容易的事情。因此,我们可以通过编写一些简单的程序来帮助我们更好地学习和理解C++语言的知识。

今天,我来介绍一个简单的C++程序——万年历程序。万年历是一种用于查询某一年、某一月、某一天具体星期是几的工具,非常方便实用。下面就让我们通过代码来实现万年历程序吧。

首先,我们要定义一些变量,以储存年、月、日、星期等信息。代码如下:


#include<iostream>

using namespace std;

int year, month, day, week, days, i;

接下来,我们需要让用户输入年月日的信息,代码如下:


cout << "请输入年、月、日(空格隔开):" << endl;

cin >> year >> month >> day;

然后,我们需要编写一个函数来计算星期几。这里,我们采用蔡勒公式进行计算,代码如下:


int CalculateWeek(int year, int month, int day)

{

  if (month == 1 || month == 2) // 将一月和二月视为上一年的13月和14月,对蔡勒公式的运算进行修正

  {

    month += 12;

    year--;

  }

  week = (day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7; // 蔡勒公式的具体求解

  return week;

}

最后,我们需要编写一个for循环来输出该月的日历。具体实现为:先通过计算本月1号是星期几,然后依次输出每一天的日期,当星期几为6(即周六)时,换行输出。代码如下:


days = CalculateWeek(year, month, 1); // 计算本月1号是星期几

cout << year << "年" << month << "月" << endl; // 输出年月信息

cout << "日 一 二 三 四 五 六" << endl; // 输出星期信息

for (i = 0; i < days; i++) //当月1号前的日期用空格表示

  cout << "  ";

for (i = 1; i <= 31; i++) //循环输出每天的日期

{

  if (i > 28 && i > days && (days != 6 || month == 2)) //当本月的日期超过28天,并且1号是星期六,或者2月份时,结束输出

  

    break;

  

  if (i < 10) //当日期小于10时,需要在前面加一个空格来使排版更加整齐

  

    cout << " ";

  

  cout << i << " "; //输出当天日期

  if (++days > 6) //星期六换行输出

  

    days = 0;

    cout << endl;

  

}

cout << endl;

通过以上代码,我们就可以实现一个简单的万年历程序。这个程序虽然简单,但是涉及到了很多基本的C++知识,包括变量定义、输入输出、函数调用、循环、判断等等,非常适合新手练习和学习。

代码如下:


#include<iostream>

using namespace std;

int year, month, day, week, days, i;

int CalculateWeek(int year, int month, int day)

{

  if (month == 1 || month == 2) // 将一月和二月视为上一年的13月和14月,对蔡勒公式的运算进行修正

  {

    month += 12;

    year--;

  }

  week = (day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7; // 蔡勒公式的具体求解

  return week;

}

int main()

{

  cout << "请输入年、月、日(空格隔开):" << endl;

  cin >> year >> month >> day;

  days = CalculateWeek(year, month, 1); // 计算本月1号是星期几

  cout << year << "年" << month << "月" << endl; // 输出年月信息

  cout << "日 一 二 三 四 五 六" << endl; // 输出星期信息

  for (i = 0; i < days; i++) //当月1号前的日期用空格表示

  

    cout << "  "; 

  

  for (i = 1; i <= 31; i++) //循环输出每天的日期

  {

    if (i > 28 && i > days && (days != 6 || month == 2)) //当本月的日期超过28天,并且1号是星期六,或者2月份时,结束输出

    

      break;

    

    if (i < 10) //当日期小于10时,需要在前面加一个空格来使排版更加整齐

    

      cout << " "; 

    

    cout << i << " "; //输出当天日期

    if (++days > 6) //星期六换行输出

    

      days = 0;

      cout << endl;

    

  }

  cout << endl;

  system("pause");

  return 0;

}

  
  
下一篇: 中的常用操作

评论区

{{item['qq_nickname']}}
()
回复
回复