C语言实现万年历

万年历

#include<stdio.h>
int dp[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},
                {0,31,29,31,30,31,30,31,31,30,31,30,31}};
int getweekend(int y,int m,int d){
	if(m==1||m==2){
        m+=12;y--;
    }
    int w= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7;
    return w;
}
int chick(int year){
    return ((year%4==0&&year%100!=0)||year%400==0) ;
}
void show(int year,int month,int wd){
    int leep=chick(year);
    printf("    日    一    二    三    四    五    六\n");
    int f=0,cnt=0,i;
    while(cnt<dp[leep][month]){
    	for(i=0;i<7;i++){
	    	if(i<wd&&f==0){
	    		printf("      ");
			}
			else {
				f=1;
				if(cnt<dp[leep][month]){
					printf("%6d",++cnt);
				}
				else printf("      ");
			}
		}
		printf("\n");
	}
}
int main(){
	int leap;
	int year,month,wd;
	printf("请输入查询的年份和月份(中间用空格隔开)\n");
	scanf("%d %d",&year,&month);
	wd=getweekend(year,month,1);
	show(year,month,wd);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1900_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值