输出万年历

来源:百度知道 编辑:UC知道 时间:2024/05/21 12:41:51
一、目的和要求
1.综合应用C语言的基本语句,编写应用程序。
2.通过程序设计进一步熟悉C语言循环语句、if语句,switch-case语句。灵活应用格式输出函数pringf,编写一定难度的应用程序。
3.计算的结果必须正确。
二、实验内容
输入任一年号、输出这一年的年历。
三、算法
首先在一行按等距离输出星期的英文单词或缩写,再第2题的方法确定该年的元旦是星期几,就确定了1月1日输出在星期几的位置,12个月循环,再每个月的天数循环按等距离输出日,每行输出完星期六后换行,一个月输出完了也换行。

以当前电脑时间为基准,显示当前年月的日历
可以按左右方向键,翻到上一月或下一月
可以按上下方向键,翻到上一年或下一年
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>

int leap(int year )
{
if ((year %4 == 0) && (year % 100 != 0)
|| (year % 400 == 0))
{
return 1;
}
return 0;
}

void show(int year,int month)
{
const char month_str[][4]={"","Jan","Feb","Mar","Apl",
"May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
const int month_day[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i,j,wdays,mdays,days;

for(i=1,days=0;i<year;i++)
{
if(leap(i))
{
days += 366;
}
else
{
days += 365;
}
}
for(i=1;i<month;i++)
{
if(i==2 && leap(year))
{