万年历系统

# include <stdio.h>
int leapyear(int year)
{
	if((year%4 == 0 &&year%100 != 0)||(year%400 == 0))
		return(1);
	else
		return(0);
}
int week(int y,int m,int d)
{
	int sum=0,i,x;
	int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
	for(i=0;i<m-1;i++)
		sum=sum+a[i];
	sum=sum+d;
	if((leapyear(y)==1)&&(m>=2))
		sum=sum+1;
	x=(5+(y+1)+(y-1)/4-(y-1)/100+(y-1)/400+sum)%7;
	return x;
}
int max(int y,int m)
{
    int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
	if(leapyear(y)==1)
		a[1]=a[1]+1;
	return a[m-1];
}
void main()
{
	int choice;
	int year,month,day;
	printf("*******************万年历********************\n");
	printf("         1.查询某年某月某日是星期几\n");
	printf("         2.是否为闰年\n");
	printf("         3.查询某月的最大天数\n");
    printf("         4.打印某年某月的月历\n");
	printf("         0.退出\n");
	printf("*********************************************\n");
	do
	{
		printf("请输入一个指令:");
	    scanf("%d",&choice);
        switch(choice)
		{
		case 0:
			printf("退出系统");break;
	    case 1:
			{
				int a;
				printf("请输入要查询的日期:\n");
			    scanf("%d,%d,%d",&year,&month,&day);
				printf("%d年%d月%d日是星期",year,month,day);
				a=week(year,month,day);
				switch(a)
				{
				case 1:printf("一\n");break;
                   case 2:printf("二\n");break;
                   case 3:printf("三\n");break;
                   case 4:printf("四\n");break;
                   case 5:printf("五\n");break;
                   case 6:printf("六\n");break;
                   case 0:printf("天\n");break;
				}
			}break;
		case 2:
			{
				printf("请输入要查询的年份:\n");
				scanf("%d",&year);
				if(leapyear(year)==1) 
				   printf("%d是闰年\n",year);
                else 
				   printf("%d不是闰年\n",year);
			}break;
		case 3:
			{
				int b;
				printf("请输入年月:\n");
				scanf("%d,%d",&year,&month);
				b=max(year,month); 
                printf("%d年%d月的最大天数是:%d\n",year,month,b);
			}break;
		case 4:
			{
				int c,t=1;
				int d[100]={0};
				printf("请输入年份:\n");
				scanf("%d",&year);
				printf("请输入月份:\n");
				scanf("%d",&month);
                printf("SUN  MON  TUE  WED  THU  FRI  SAT  :\n");
			    printf("*******************%d年%d月********************\n",year,month);
                c=week(year,month,1);
				for(int h=0;h<c;h++)
					printf("     ");
				for(int i=c;i<=max(year,month)+c-1; i++)
				{
					d[i]=t;
					t++;
				}
                for(int j=c;j<=max(year,month)+c-1; j++)
				{
					printf("%2d   ",d[j]);
					if((j+1)%7==0)
							printf("\n");
				}
				printf("\n************************************************\n");
			}
		}
	}while(choice!=0);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值