"该程序是用C++ Builder 6编写的,主要功能包括生成万年历、计算两个日期之间的间隔天数以及确定某一天是星期几。它通过leap()函数判断是否为闰年,yuefen()函数计算指定月份的天数,days()函数计算从2014年到指定年份的总天数,并确定该年中的某一天是星期几。print_calendar()函数用于打印指定年份的日历。" 在这个程序中,以下几个关键知识点值得深入讨论: 1. **闰年判断**:leap()函数是判断一个年份是否为闰年的关键。根据公历规则,如果年份能被400整除,或者能被4整除但不能被100整除,则该年为闰年。leap()函数通过这个规则返回一个布尔值,0表示闰年,1表示非闰年。 2. **月份天数计算**:yuefen()函数用于获取特定年份和月份的天数。对于2月,它会根据leap()函数的结果(是否为闰年)来决定天数是28还是29。其他月份则根据固定天数进行分配,即4月、6月、9月和11月各有30天,其余月份有31天。 3. **日期间隔计算**:days()函数用于计算从2014年到指定年份的总天数。它首先判断指定年份是否在2014年之后或之前,然后对每个年份进行累加,闰年加366天,平年加365天。最后根据指定年份是否为闰年来调整天数,并计算出该年中的具体日期对应的星期数。 4. **星期计算**:days()函数中的sum_days变量用于计算指定日期是星期几。首先计算从2014年1月1日到指定日期的总天数,然后用这个天数除以7取余,余数加7再取余,得到的结果就是0到6,分别代表星期日到星期六。 5. **日历打印**:print_calendar()函数没有在提供的代码中完全展示,但通常它会遍历指定年份的每个月,调用yuefen()计算每月天数,并输出相应的日历格式。 6. **C++ Builder 6**:这是一个集成开发环境,用于编写C++应用程序。在这个环境中,程序可能利用了VCL(Visual Component Library)框架,提供了图形用户界面组件和事件驱动编程模型。 通过这些知识点,我们可以理解程序如何实现其主要功能,同时也可以学习到关于日期和时间处理的常见算法以及如何在C++中实现它们。
#include<conio.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
//判断闰年
int leap(int y)
{
if(y%400 == 0) return 0;
else if(y%4==0 && y%100!=0) return 0;
else return 1;
}
//确定每月多少天
int yuefen(int y,int n)
{
int m;
switch(n)
{
case 2: if(leap(y)==0)
{
m=29; break;
}
else m=28;break;
case 4: m=30; break;
case 6: m=30; break;
case 9: m=30; break;
case 11: m=30; break;
}
return m;
}
//确定该年1月1日的位置 (2014年7 月20日是星期天)
int days(int y)
{
int sum =0;
int i,temp;
int sum_days;
i = y;
if(i>2014)// 2014 7 20 到 x年1月1日的天数 +
{
for(i=2014;i<y;i++)
{
if(leap(i+1)==0) sum+=366;//2014 年 7月20日 到 X 年7 月20 日的天数
else sum += 365;
}//for
if(leap(y)==0)sum -= 201;
else sum -= 200;
}//if
else if(i<2014)// x年1月1日 到 2014年 7月 20日 的天数 -
{
for(;i<2014;i++)
{
if(leap(i+1)==0) sum+=366; // X年7月20日 到 2014年7月20 的天数
else sum += 365;
剩余10页未读,继续阅读
- 粉丝: 0
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展