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;
}

點擊以下鏈接查看單排萬年曆

點擊查看單排萬年曆

原創文章,禁止轉載,謝謝


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章