C语言打印万年历(1990年以后)

代码及注释:

#include<stdio.h>
int numday[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 LeapYear(int year)
{
	return (year%4==0&&year%100!=0||year%400==0); 
}
//函数功能:输出任意年的任意月份的1号是是星期几 
int DayOfWeek(int year, int j)
{
	int i;//循环计数变量 
	int n;//存储距离1990.1.1天数 
	int w;//星期几 
	n = (year - 1990) * 365 + 1;
	for (i=1; i<=j; i++)
	{
		n += numday[LeapYear(year)][i-1];
		w = n % 7;
	}
	return w;
}
//函数功能:输出万年历 
void Output(int year)
{
	int i;//控制打印空格 
	int j;//循环计数,打印12个月
	int h;//控制每月1号开始的位置 
    for (j=1; j<=12; j++) 
    {
	    printf("Calendar %d - %d\n", year, j);
	    printf("---------------------\n");
	    printf("Su Mo Tu We Th Fr Sa \n");
	    printf("---------------------\n");
	    for (i=0; i<DayOfWeek(year, j); i++)
	    {
	    	printf("   ");//控制1号开始位置 
		}
		h = i;
	    for (i=1; i<=numday[LeapYear(year)][j]; i++)
	    {
	    	printf("%-3d", i);//打印1 ~ 28、29、30、31 
	    	h++;//控制当打印到星期六时,换行 
	    	if(h%7 == 0)
	    	{
	    		printf("\n");
			}
		}
		printf("\n");//每打印一个月换行一次 
	}
}
int main()
{
	int year;
	printf("请输入年份:");
	scanf("%d", &year);
	Output(year);
	return 0;
}

示例输出:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值