21xrx.com
2025-04-17 22:10:53 Thursday
文章检索 我的文章 写文章
C++万年历程序设计
2023-07-05 05:23:36 深夜i     16     0
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;
}

  
  
下一篇: 中的常用操作

评论区

请求出错了