日期相关问题(打印月历)

日期相关问题

打印月历

#include<stdio.h>
int monthdays[2][13]={{0,31,28,31,30,31,30,31,30,31,30,31,30},{0,31,29,31,30,31,30,31,30,31,30,31,30}};
int IsLeap(int y);
int Value(int y,int m);
void Draw(int y,int m,int val);
int main(void) 
{
	int year,month;
	int v;
	
	scanf("%d%d",&year,&month);
	//printf("%d\n",year);
	v=Value(year,month);
	Draw(year,month,v);
}
int IsLeap(int y){
	return y%400==0||y%4==0&&y%100!=0;
}

int Value(int y,int m){
	int day=1;
	int fin;
	for(int i=1900;i<=y;i++){
		if(IsLeap(y)){
			day += (366%7);
			//printf("%d年day是%d\n",i,day);
		}
		else {
			  day += (365%7);
		      //printf("%d年day是%d\n",i,day);
			 	
		} 	 
	}
	//printf("测试day:%d\n",day);
    if(IsLeap(y)){
	    	for(int j=1;j<m;j++){
	    		day+=monthdays[1][j]%7;
			}
			fin=day%7;
		
	}
	else{
		for(int j=1;j<m;j++){
		     day+=monthdays[0][j]%7;
	    }
	    fin=day%7;
 	}
 	//printf("测试2day:%d\n",day);
 //	printf("测试3fin:%d\n",fin);
 	return fin;
 }
 	
void Draw(int y,int m,int val){
	//printf("%d-%d-%d",y,m,val);
	char months[13][15]={"","January","February","March","April","May","June","July","August","September","October","November","December"};
	printf("\t%s(%d)\n",months[m],y);
	printf("Sun Mon Tue Wed Thu Fri Sat\n");
	for(int i=0;i<val;i++){
		printf("    ");
	}
	if(IsLeap(y)){
		for(int j=1;j<=monthdays[1][m];j++){
			printf("%3d ",j);
			val++;
			if(val%7==0)    printf("\n");
			
		}
	}
	else{
			for(int j=1;j<=monthdays[0][m];j++){
			printf("%4d",j);
			val++;
			if(val%7==0)    printf("\n");
	        }
        }
}
2019 5
        May(2019)
Sun Mon Tue Wed Thu Fri Sat
               1   2   3   4
   5   6   7   8   9  10  11
  12  13  14  15  16  17  18
  19  20  21  22  23  24  25
  26  27  28  29  30  31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值