用C语言编写万年历程序

万年历功能:输出界面1.显示当前时间2.日期和星期的转换3.根据指定日期对N天后是星期几的计算.4.输入日期查询,显示查询日期的月日.5.闰年判断输入1:显示当前系统时间... 万年历

功能:

输出界面
1.显示当前时间
2.日期和星期的转换
3.根据指定日期对N天后是星期几的计算.
4.输入日期查询,显示查询日期的月日.
5.闰年判断
输入1:显示当前系统时间
输入2:输入年月日,输出星期几
输入3:输入年月日,输入n,输出“输入年月日n天后是星期几”。
输入4:输入年,输入天数,计算出是该年的月份和日期。
输入5:输入年,输出是否闰年。
展开
 我来答
royxu1993
2011-06-17
知道答主
回答量:32
采纳率:0%
帮助的人:11.3万
展开全部
// test1.cpp : Defines the entry point for the console application.
//

#include <stdexcpt.h>
//输入年份,输出年历。

//---------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
int JudgeLeapYear(int); //判断是否为闰年
int MonthDay(int m,int y); //返回本月的天数
void printHeader(void); //输出表头
int FirstWeek(int m,int y); //返回本月一号是星期几
void printMonth(int m); //输出月份表头
int main(int argc, char* argv[])
{
int year,month,i,test,week;
printf("Year:");
scanf("%d",&year);
for (month=1; month<=12; month++)
{
test=1;
printMonth(month);
printHeader();
week=FirstWeek(month,year);
if (week <= 6)
{
//输出每月的第一星期
for (i=0; i<=week; i++)
{
putchar('\t');
test++;
}
}
for (i = 1; i <= MonthDay(month,year); i++,test++)
{
//输出每个月非第一个星期
printf("%d\t",i);
if (test%7==0)
{
putchar('\n');
}
}
putchar('\n');

system("pause");//暂停,以便观察输出
}
return 0;
}
//判断是否润年
int JudgeLeapYear(int y)
{
return (y%4==0&&y%100||y%400==0)?1:0;
}
//返回这月的一号是星期几
int FirstWeek(int month,int year)
{
if (month<3)
{
month+=12;
year--;
}
return (1+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7;
}
//一月有多少天
int MonthDay(int month,int year)
{
int d;
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:d=31;break;
case 4:
case 6:
case 9:
case 11:d=30;break;
case 2:d=JudgeLeapYear(year)?29:28;break;
}
return d;
}
//打印日历头
void printHeader(void)
{
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n","Sun","Mon","Tue","Wed","Thur","Fri","Sat");
}

//打印月份
void printMonth(int m)
{
switch (m)
{

default:
case 1:puts("===January===");break;
case 2:puts("===February===");break;
case 3:puts("===March===");break;
case 4:puts("===April===");break;
case 5:puts("===May===");break;
case 6:puts("===June===");break;
case 7:puts("===July===");break;
case 8:puts("===August===");break;
case 9:puts("===September===");break;
case 10:puts("===October===");break;
case 11:puts("===November===");break;
case 12:puts("===December===");break;
}
}
//--------------------------------------------------------------------
楼上的运行不出来吧
miniappEVoW90Q0wgZ0n
2011-06-17 · TA获得超过422个赞
知道小有建树答主
回答量:339
采纳率:20%
帮助的人:89.3万
展开全部
// test1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
//输入年份,输出年历。

//---------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
int JudgeLeapYear(int); //判断是否为闰年
int MonthDay(int m,int y); //返回本月的天数
void printHeader(void); //输出表头
int FirstWeek(int m,int y); //返回本月一号是星期几
void printMonth(int m); //输出月份表头
int main(int argc, char* argv[])
{
int year,month,i,test,week;
printf("Year:");
scanf("%d",&year);
for (month=1; month<=12; month++)
{
test=1;
printMonth(month);
printHeader();
week=FirstWeek(month,year);
if (week <= 6)
{
//输出每月的第一星期
for (i=0; i<=week; i++)
{
putchar('\t');
test++;
}
}
for (i = 1; i <= MonthDay(month,year); i++,test++)
{
//输出每个月非第一个星期
printf("%d\t",i);
if (test%7==0)
{
putchar('\n');
}
}
putchar('\n');

system("pause");//暂停,以便观察输出
}
return 0;
}
//判断是否润年
int JudgeLeapYear(int y)
{
return (y%4==0&&y%100||y%400==0)?1:0;
}
//返回这月的一号是星期几
int FirstWeek(int month,int year)
{
if (month<3)
{
month+=12;
year--;
}
return (1+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7;
}
//一月有多少天
int MonthDay(int month,int year)
{
int d;
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:d=31;break;
case 4:
case 6:
case 9:
case 11:d=30;break;
case 2:d=JudgeLeapYear(year)?29:28;break;
}
return d;
}
//打印日历头
void printHeader(void)
{
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n","Sun","Mon","Tue","Wed","Thur","Fri","Sat");
}

//打印月份
void printMonth(int m)
{
switch (m)
{

default:
case 1:puts("===January===");break;
case 2:puts("===February===");break;
case 3:puts("===March===");break;
case 4:puts("===April===");break;
case 5:puts("===May===");break;
case 6:puts("===June===");break;
case 7:puts("===July===");break;
case 8:puts("===August===");break;
case 9:puts("===September===");break;
case 10:puts("===October===");break;
case 11:puts("===November===");break;
case 12:puts("===December===");break;
}
}
//---------------------------------------------------------------------------
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式