C实例编程(用C语言编写的一个日历文件)

C实例编程(用C语言编写的一个日历文件),第1张

C实例编程(用C语言编写的一个日历文件),第2张

该程序已在vc中调试运行。
# include
# include
# include
typedef struct
{
unsigned charday;
无符号字符月份;
无符号短年;
} T _ MFW _日期;
typedef结构
{
T _ MFW _日期DATE;/*记录日期*/
} t _ CLD record;
typedef结构
{
T _ MFW _日期today _ date/*在程序中没有作用*/
T _ MFW _日期光标_日期;
int days _ map[6][7];/*日期映射*/
} t _ CLD main _ data;
t _ CLD main _ data * CLD main _ data;
void CLD main _ get _ days _ map(void);
void main(void)
{
int I,j;
CLD main _ data =(t _ CLD main _ data *)malloc(sizeof(t _ CLD main _ data));
CLD main _ data-> cursor _ date . day = 20;
while(1)
{
char buf[20];
char * p;
memset(buf,0,20);
printf("年月:");
gets(buf);
if(buf[0]= = ' q ')break;
CLD main _ data-> cursor _ date . year = strtod(buf,& p);
p++;
CLD main _ data-> cursor _ date . month = strtod(p,& p);
printf("年%d月%d ",(cldmain_data->cursor_date.year),(CLD main _ data-> cursor _ date . month));
CLD main _ get _ days _ map();
printf(" mo tu w with fr苏萨");
for(j = 0;j < 6;j++)
{
printf(" ");
for(I = 0;I < 7;i ++)
{
printf("%i ",CLD main _ data-> days _ map[j][I]);
}
printf(" ");
}
}
//getchar();
}
/*
检查日期是否合法。
返回1,考试是合法的。大提示否则返回0
*/
int check _ date(t _ mfw _ date date)
{
/*大于2000小于2100,月份合法*/
if(date . year < 2000 date . year > = 2100 date . month < 1 date . month > 12)
{

}
/*day是合法的*/
if(date.day < 1)返回0;
if(date . day > month _ days[date . month-1])返回0;
if(date . month = = 2)
{
if(date . year % 4!= 0)
{
if(date . day = = 29)返回0;
}
}
return 1;
}
/*
函数:获取每月第一天的星期几
星期一,23456
返回值:1 2 3 4 5 6 7
如果返回0,则为错误
*/[
/*参考1997年1月1日,参数cursor_date从2000年1月1日到2099年1月1日*。
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;
补休天数=补休天数+I * 1;
if(cursor _ date . month > 2)
{
if(cursor _ date . year % 4 = = 0)
{
comp _ days+= 1;
}
}
if(cursor _ date . day > 2098)返回0;
day = comp _ days % 7;
/* 1997年1月1日是星期三*/
day =(day+2)% 7;
if(day = = 0)day = 7;
退货日;
}
/*
根据参数的值,得到本月的天数。
返回值:本月的天数
int count _ days _ of _ month(t _ mfw _ date
unsigned char day = CLD main _ data-> cursor _ date . day;
无符号char month = CLD main _ data-> cursor _ date . month;
无符号短年= CLD main _ data-> cursor _ date . year;
如果(月!= 2)
{
返回month _ days[month-1];
}
else
{
if(year % 4!= 0)
{
return 28;
}
if(year % 4 = = 0)
{
if(year % 100 = = 0)
{
if(year % 400 = = 0)
{
return 29;
}
return 28;
}
return 29;
}
}
}
/*
获取日期映射并保存在全局结构变量cldmain_data的成员数组变量days_map中。
*/
void cldmain _ get
int day;
T _ MFW _日期游标_日期= cldmain_data->游标_日期;
int * map _ p = CLD main _ data-> days _ map[0];
int days _ count;
int weekday;
for(I = 0;I < 6 * 7;i++)
{
map _ p[I]= 0;
}
if(check _ date(CLD main _ data-> cursor _ date)= = 0)return;
days _ count = count _ days _ of _ month(CLD main _ data-> cursor _ date);
weekday = get _ weekday _ of _ month(CLD main _ data-> cursor _ date);
day = 1;
for(I = weekday-1;I <天数_计数+工作日-1;i++)
{
map _ p[I]= day;
day++;
}
}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C实例编程(用C语言编写的一个日历文件)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情