日历的打印

涉及到判断闰年,x年x月x日是一年中的第几天,用公式计算输入的日期是礼拜几

代码如下:

#include <stdio.h>

    int Isleap(int a,int b,int c)  //判断是否为闰年函数
{
	if ((a % 4 == 0 && a % 100 != 0) || (a % 400 == 0))
	{
		printf("%d年%d月%d日是闰年\n",a,b,c);
	    return 1;
	}
	else
	{
		printf("%d年%d月%d日不是闰年\n",a,b,c);
	    return 0;
	}
}

    int total_day(int a,int b,int c,int ret) //计算输入的日期一年中的第几天
{
	int arr[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
	int sum = 0, i = 0;
	if (ret == 1)
	 {
		arr[1] = 29;
	 }
	    while (i < b - 1)
	  {   
		sum += arr[i];
		i++;
	  }
	    sum += c;
	return sum;
}
    int display_week(int a,int b,int c) //计算输入的日期是礼拜几
{
	int W;
	if(b == 1)
	{ 
		b = 13;
		a -= 1;
	}
	if(b == 2)
	{ 
		b = 14;
		a -= 1;
	}
 W = (c + 2 * b + 3 * (b + 1) / 5 + a + a / 4 - a / 100 + a / 400 + 1) % 7;
   return W;
}

void display_month(int a,int b,int ret)
{
	int i = 0,day = 0,j = 0; //j存放该月的第一天是礼拜几,day存放该月有多少天
	printf("%d年%d月\n",a,b);
	j = display_week(a,b,1);
	int arr[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
	if (ret == 1)
	arr[1] = 29;
	day = arr[b-1];
	printf("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n");
	printf("----------------------------------------------------\n");
	if(j != 0)
	{
		for(i = 0;i < j;i++)
		{
			printf("\t");
		}
	}
	for(i = 1;i <= day; i++)
	{
		printf("%d\t",i);
		if((i + day) % 7 == 0)
		{
			printf("\n");
		}
	}
}

int main(int argc, const char *argv[])//主函数
{
	int a = 0,b = 0,c = 0;
	int day = 0;
	int ret = 0;
	int w = 0;

	printf("please enter 3 numbers\n");
	
	scanf("%d %d %d",&a,&b,&c);
	
	ret = Isleap(a,b,c);
	
	day = total_day(a,b,c,ret);
	
	printf("%d年%d月%d日是这一年的%d天\n",a,b,c,day);
	
	w = display_week(a,b,c);
	
	printf("%d年%d月%d日是星期%d\n",a,b,c,w);

	display_month(a,b,ret);

	putchar('\n');
	
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值