C语言万年历(n排)

以下是使用c语言实现的一个万年历程序(n排)(for循环实现):

正常int范围内的年份不会出现问题





#include<stdio.h>
#include<stdlib.h>
int main()
{	
	int i,j,h,k,r,m,n,s,year,mon[12]={31,28,31,30,31,30,31,31,30,31,30,31},day[12];
	printf("请输入年份:");
	scanf("%d",&year);
	printf("想要排几行:");
	scanf("%d",&n);
	if(year%4==0&&year%100!=0||year%400==0)
		mon[1]=29;
	day[0]=(year+(year-1)/4-(year-1)/100+(year-1)/400)%7;
	for (m=1;m<12;m++)
		day[m]=(day[m-1]+mon[m-1])%7;
	for(i=1;i<=12/n+1;i++)
	{
		for(j=1;j<=10;j++)
		{
			for (r=1,s=(i-1)*n;r<=n&&s<12;r++,s++)
			{
				if (j==1)
					printf("%8d年%3d月      ",year,s+1);
				if (j==2||j==10)
					printf("~~~~~~~~~~~~~~~~~~~~~");
				if (j==3)
					printf(" 日 一 二 三 四 五 六");
				for (k=(j-4)*7+1,h=1;k<=42&&h<=7;k++,h++)
				{
					if (k<=mon[s]+day[s])
					{
						if (j==4)
						{
							if (k<=day[s])
								printf("   ");
							else
								printf("%3d",k-day[s]);
						}
						else if (j!=1&&j!=2&&j!=3&&j!=10)
							printf("%3d",k-day[s]);
					}
					else
						printf("   ");
				}
				printf("   ");
			}
			printf("\n");	
		}
	}
	system("color B0");//设置颜色 可以注释掉
	system("pause");
	return 0;
}

点击以下链接查看单排万年历

点击查看单排万年历

原创文章,禁止转载,谢谢

扫描二维码关注公众号,回复: 250406 查看本文章

猜你喜欢

转载自blog.csdn.net/skying_/article/details/78414876