C语言实现简单日历

#include<stdio.h>
#include<stdlib.h>
int lastDay;
int isYear;
int column=0;//没行的天数,应该为7天;
char aa[27]={'M','o','n',' ','T','u','e',' ','W','e','d',' ','T','h','u',' ','F','r','i',' ','S','a','t',' ','S','u','n'};
int k=0;
int k2;
int count=0;//每周的天数;
int bb[36][40];

int judgeYear(int a);
int dayNum(int year,int month);

void details(int year ,int month,int day);


void print(int year,int month,int day);
//声明函数;年

void main()
{

printf("查询的范围是2010年1月1日到2012年12月31日");
details(2010,1,1);
int m,n;
for(int i=0;i<24;i++)
{
scanf("%d%d",&m,&n);
printf("查询的是:%d 年%d月\n\n",m,n);

print(m,n,1);
}

}


int judgeYear(int a)
{
if(((a%4==0)&&(a%100!=0))||(a%400==0))
return isYear=0;
else
return isYear=1;
}

int dayNum(int year,int month)
{
if(month==2)
{
if(judgeYear(year)==0)
return 29;
else return 28;
}
else {
switch(month)
{
case 1: return 31;break;
case 3: return 31;break;
case 4: return 30;break;
case 5: return 31;break;
case 6: return 30;break;
case 7: return 31;break;
case 8: return 31;break;
case 9: return 30;break;
case 10: return 31;break;
case 11: return 30;break;
default: return 31;
}
}
}


void details(int year ,int month,int day)
{
int column3;
bool change = false;//下个月标记;
int i,j;
//bool lastNumber = false;

for( i=0;i<36;i++)
for( j=0;j<40;j++)
{


if(i==0&&(j<4))
{

if(j<4)
{
bb[i][j]=0;
column++;
}
if(column==8)
column=1;
}


else if(change&&(column<7))
{

column3=column;

while(column3>0)
{
bb[i][j++]=0;
column3--;
change=false;
}
j=j-1;

continue;
}


else if(change&&(column==7))
{
change = false;
bb[i][j] = ++k;
column++;
if(column==8)
column=1;

}


else
{

bb[i][j] = ++k;
column++;
if(column==8)
column=1;
}


if(column==8)
column=1;
if(i>=24&&i<36)
{
month = i-24+1;
year=2012;
}
else if(i>11&&i<24)
{
month = i-12+1;
year=2011;
}
else
{

month = i+1;
year=2010;
}
if((k==29)&&(month==2))
printf("%d\n",column);


if(dayNum(year,month)==k)
{

k=0 ; //天数归零;
change=true;
break;

}
}
}


void print(int year,int month,int day)
{
int i;
printf(" %d年 ",year);
printf("%d月\n",month);


for(int m=0;m<27;m++)
printf("%c",aa[m]);
printf("\n");
if(year==2010)
i = month-1;
else if(year==2011)
i=month-1+12;
else if(year==2012)
i=month-1+12+12;

int col=0;

for(int j=0;j<40;j++)
{

int number;
number = bb[i][j];
// if(j==1)
//printf("%d日",bb[3][1]);


if(number==0)
{
printf(" ");
col++;
}
else if(number>0)
{
if(number<=9)
printf("%d ",number);
else
printf("%d ",number);
col++;
}

if(col==7)
{
col=0;
printf("\n");
}

if(dayNum(year,month)==number)
{
printf("\n");
printf("\n");
break;
}
}

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值