当前位置:文库下载 > 所有分类 > IT/计算机 > 用c编写的日历源码
侵权投诉

用c编写的日历源码

用c编写的日历源码

*
该程序在中调试运行通过.
*/

#include
#include
#include
#include

typedef struct
{
unsigned charday;
unsigned charmonth;
unsigned shortyear;
}T_MFW_DATE;
typedef struct
{
T_MFW_DATE date;/*记录的日期*/
}t_cldrecord;
typedef struct
{
T_MFW_DATE today_date;/*在程序中没有作用*/
T_MFW_DATE cursor_date;

int days_map[6][7];/*日期地图*/

}t_cldmain_data;
t_cldmain_data *cldmain_data;
void cldmain_get_days_map(void);
void main(void)
{
int i,j;
cldmain_data = (t_cldmain_data*)malloc(sizeof(t_cldmain_data));

cldmain_data->cursor_date.day = 20;
while(1)
{
char buf[20];
char *p;
memset(buf,0,20);
printf("year month:");
gets(buf);
if(buf[0] == ’q’)break;
cldmain_data->cursor_date.year = strtod(buf,&p);
p ++;
cldmain_data->cursor_date.month = strtod(p,&p);
printf("year %dmonth %d",(cldmain_data->cursor_date.year),(cldmain_data->cursor_date.month));

cldmain_get_days_map();
printf("motuwthfrsasu");
for(j = 0; j < 6; j ++)
{
printf("");
for(i = 0; i < 7; i ++)
{
printf("%i",cldmain_data->days_map[j][i]);
}
printf("");
}
}
//getchar();
}
/*
检查日期是否合法
合法返回1,否则返回0
*/
int check_date(T_MFW_DATE date)
{
char month_days[] = ;
/*大于2000年,小于2100年,月份合法*/
if(date.year < 2000 || date.year >= 2100 || date.month < 1 || date.month > 12)
{
return 0;
}
/*day合法*/
if(date.day < 1)return 0;
if(date.day > month_days[date.month - 1])return 0;
if(date.month == 2)
{
if(date.year % 4 != 0)
{
if(date.day == 29)return 0;
}
}
return 1;
}
/*
功能:得到每个月第一天是星期几
星期一 二 三 四 五 六 日
返回值:1 2 3 4 5 6 7

如果返回为0,则出错
*/
int get_weekday_of_month(T_MFW_DATE cursor_date)
{
int day;
/*参照1997年1月1日,参数cursor_date从2000年1月1日到2099年1月1日*/
//char month_days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int this_year_days[] ={ 0, 31, 59, 90, 120, 151,181, 212, 243, 273, 304, 334};
int cursor_year_days = this_year_days[cursor_date.month - 1] + (cursor_date.day = 1);
int comp_days = (cursor_date.year - 1997)*365 + cursor_year_days;

int i = (cursor_date.year - 1997)/4;
comp_days = comp_days + i * 1;

if(cursor_date.month > 2)
{
if( cursor_date.year % 4 == 0 )
{
comp_days += 1;
}
}

if(cursor_date.day > 2098)return 0;

day = comp_days % 7;
/*1997年1月1日是星期三*/
day = (day + 2) % 7;
if(day == 0)day = 7;
return day;
}
/*
根据参数的值,得到该年该月有多少天.
返回值:该月的天数
*/
int count_days_of_month(T_MFW_DATE cursor_date)
{
char month_days[] = ;
unsigned char day = cldmain_data->cursor_date.day;
unsigned cha


r month = cldmain_data->cursor_date.month;
unsigned short year = cldmain_data->cursor_date.year;

if(month != 2)
{
return month_d

第1页

猜你喜欢

返回顶部