用C语言设计一个年历系统。。。求代码
问题描述:
年历系统首先对于输入的任一年,能够给出该年每月的日期及实际周几的对应情况,并与实际的星期数垂直对齐,如下表所示(当输入2004时显示如下):
Input the year:2004
The calendar of the year 2004.
Januray 1 February 2
============================== ==============================
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
1 2 3 1 2 3 4 5 6 7
4 5 6 7 8 9 10 8 9 10 11 12 13 14
11 12 13 14 15 16 17 15 16 17 18 19 20 21
18 19 20 21 22 23 24 22 23 24 25 26 27 28
25 26 27 28 29 30 31 29
============================== ==============================
March 3 April 4
============================== ==============================
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 1 2 3
7 8 9 10 11 12 13 4 5 6 7 8 9 10
14 15 16 17 18 19 20 11 12 13 14 15 16 17
21 22 23 24 25 26 27 18 19 20 21 22 23 24
28 29 30 31 25 26 27 28 29 30
============================== ==============================
功能要求 :
⑴ 输入任一年将显示出该年的所有月份日期,对应的星期,输出的格式如上表要求(注意闰年情况);
⑵ 输入任意日期(包括年、月、日,格式有yyy/mm/dd、dd/mm/yyyy、mm/dd/yyyy、和yyyy,mm,dd、mm,dd,yyyy、dd,mm,yyyy六种基本情况),要求能够显示出该日期是本年的哪一周,是星期几。
------解决方案--------------------
这是C++版本的,将其中的C++语法改成C语言的即可。
//日历 作者QQ 93506222 于2012.9.22
#include
using namespace std;
#include
#include
#include
//是否闰年
#define IS_LEAP_YEAR(iYear) (((iYear) % 100 == 0) ? ((iYear) % 400 == 0) : ((iYear) % 4 == 0))
int Calendar(int iYear, int iMonth);
void main()
{
//获取今天的日期
SYSTEMTIME tm;
::GetLocalTime(&tm);
int iYear = tm.wYear;
int iMonth = tm.wMonth;
do {
system("cls");
int ch = Calendar(iYear, iMonth);
if (ch == 27) break;
switch (ch)
{
case 75://
iYear--;
break;
case 77://-->
iYear++;
break;
case 80://下箭头
iMonth++;
if (iMonth > 12)
{
iYear++;
iMonth = 1;
}
break;
case 72://上箭头
iMonth--;
if (iMonth
{
iYear--;
iMonth = 12;
}
break;
case 71://Home
iYear = tm.wYear;
iMonth = tm.wMonth;
break;
}
} while (1);
}
//显示给定年月的日历
//返回值为获取的用户按键, 以确定下一步的操作
int Calendar(int iYear, int iMonth)
{
int i, j, iDays;
//初始化数组w的值为1至31
int w[31];
for (i = 0; i