功能:输入日期,查看当月日历表
#include <stdio.h>
int xingqi (int year, int mounth, int date);
void print_calendar (int year, int mounth ,int );
int Year(int year);
int main(int argc, const char *argv[])
{
int year, mounth,date;
printf("请输入你所要查询的日期\n");
scanf("%d%d%d", &year, &mounth, &date);
print_calendar(year,mounth,date);
return 0;
}
int xingqi (int year, int mounth, int date) {
int xingqi = -1;
if (mounth == 1 || mounth == 2 )
{
mounth += 12;
year --;
}
xingqi = (date + 1 + 2 * mounth + 3 * (mounth + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7;
return xingqi;
}
void print_calendar (int year, int mounth ,int date) {
printf (" 周日 周一 周二 周三 周四 周五 周六\n");
int temp ;
int date1;
switch ( mounth )
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
temp = xingqi (year, mounth, 1);
date1 = 1;
for (int i = 1; i <= 31 + temp; i++) {
if(i <=temp)
printf(" \t");
else{
if(date == date1)
printf(" *%02d\t",date1++);
else
printf(" %02d\t",date1++);
}
if(i % 7==0)
puts("");
}
puts("");
break;
case 4:
case 6:
case 9:
case 11:
temp = xingqi (year, mounth, 1);
date1 = 1;
for (int i = 1; i <= 30 + temp; i++) {
if(i <=temp)
printf(" \t");
else{
if(date == date1)
printf(" *%02d\t",date1++);
else
printf(" %02d\t",date1++);
}
if(i % 7==0)
puts("");
}
puts("");
break;
case 2:
if(Year(year)) {
temp = xingqi (year, mounth, 1);
date1 = 1;
for (int i = 1; i <= 29 + temp; i++) {
if(i <=temp)
printf(" \t");
else{
if(date == date1)
printf(" *%02d\t",date1++);
else
printf(" %02d\t",date1++);
}
if(i % 7==0)
puts("");
}
puts("");
}
else {
temp = xingqi (year, mounth, 1);
date1 = 1;
for (int i = 1; i <= 28 + temp; i++) {
if(i <=temp)
printf(" \t");
else{
if(date == date1)
printf(" *%02d\t",date1++);
else
printf(" %02d\t",date1++);
}
if(i % 7==0)
puts("");
}
puts("");
}
break;
default:
break;
}
}
int Year(int year){
if((year % 400 == 0 )|| ((year % 4 ==0 && (year % 100 != 0))))
return 1;
else
return 0;
}
运行截图: