龙空技术网

C|输出年历(用分治法分解为4个函数,及求某年第一天是星期几)

小智雅汇 382

前言:

现在同学们对“年历c语言”大致比较注意,看官们都想要剖析一些“年历c语言”的相关文章。那么小编在网络上汇集了一些有关“年历c语言””的相关知识,希望朋友们能喜欢,姐妹们快快来学习一下吧!

整个任务分解为以下四个函数:

int daysofmonth(int m); //每月的天数

int firstday(int y); //某年元旦(1月1号)是星期几

void printhead(int m); //打印每月的日历头(判定起始位置)

void printmonth(int m); //打印每月日历

以下代码可以求出某年元旦(1月1号)是星期几:

int w = y-1+(y-1)/4-(y-100)/100+(y-1)/400 ;

return w%7;

全部代码:

输出:

附代码:

	#include <stdio.h>	#include <stdlib.h>	#include <math.h>	void printmonth(int m);	//打印每月日历	void printhead(int m);	//打印每月的日历头(判定起始位置)	int daysofmonth(int m); //每月的天数	int firstday(int y);	//判断某年元旦(1月1号)是星期几	int year,weekday;	int main()	{		int i;		printf("请输入年份:"); 		scanf("%d",&year); 		weekday=firstday(year); 		printf("\n\n"); 		printf(" %d年\n",year); 		for(i=1;i<=12;i++) 		{ 			printmonth(i); 			printf("\n"); 		} 		printf("\n\n");		system("pause");		return 0;	}	void printmonth(int m) //打印每月日历	{		int i,days; 		printhead(m); 		days=daysofmonth(m); 		for(i=1;i<=days;i++) 		{ 			printf("%5d",i); 			weekday=(weekday+1)%7; 			if (weekday==0) printf("\n "); 		}	}	void printhead(int m) //打印每月的日历头(判定起始位置)	{ 		int i; 		printf("\n%d月 日 一 二 三 四 五 六\n",m); 		printf(" "); 		for(i=0;i<weekday;i++) printf(" ");	}	int daysofmonth(int m) //每月的天数	{ 		switch (m) 		{		case 1:		case 3: 		case 5: 		case 7: 		case 8: 		case 10: 		case 12:return 31; 		case 4: 		case 6: 		case 9: 		case 11:return 30; 		case 2:			{			if (((year%4==0 && year%100!=0)||year%400==0)) 				return 29; 			else 				return 28; 			}		default: return 0; 		}	}	int firstday(int y) //判断某年元旦(1月1号)是星期几	{ 		int w = y-1+(y-1)/4-(y-100)/100+(y-1)/400 ; 		return w%7;	}

-End-

标签: #年历c语言