c实现日期查询,计算天数和星期

#include <stdio.h>

void main()
{
	struct 
	{
		int day;
		int mon;
		int year; 
	} date;
	int m,n;
	printf("输入年月日,以空格隔开(最后以Ctrl+Z结束):\n");
	while(scanf("%d%d%d",&date.year,&date.mon,&date.day)!=EOF)
	{
		switch(date.mon)
		{
			case 1:n=date.day;break;                                      
			case 2:n=31+date.day;break;
			case 3:n=31+28+date.day;break;
			case 4:n=31+28+31+date.day;break;
			case 5:n=31+28+31+30+date.day;break;
			case 6:n=31+28+31+30+31+date.day;break;
			case 7:n=31+28+31+30+31+30+date.day;break;
			case 8:n=31+28+31+30+31+30+31+date.day;break;
			case 9:n=31+28+31+30+31+30+31+31+date.day;break;
			case 10:n=31+28+31+30+31+30+31+31+30+date.day;break;
			case 11:n=31+28+31+30+31+30+31+31+30+31+date.day;break;
			case 12:n=31+28+31+30+31+30+31+31+30+31+30+date.day;break;
			default : break;
		}
		
		if ((date.year/4)*4==date.year&&date.mon>2)
		{
			if ((date.year/100)*100==date.year)
			{
				if ((date.year/400)*400==date.year)
				{
					n=n+1;
				}
			}
			else
			{
				n=n+1;
			}
		 } 	
	printf("%d - %d - %d\t%d\t",date.year,date.mon,date.day,n);	 
	if(date.mon==1||date.mon==2)//判断month是否为1或2 
	{
		date.year--;
		date.mon+=12;
	}
	int c=date.year/100;
	int y=date.year-c*100;
	int week=(c/4)-2*c+(y+y/4)+(13*(date.mon+1)/5)+date.day-1;
	while(week<0){week+=7;}
	week%=7;
	
	switch(week)
	{
		case 1:printf("Monday\n");break;
		case 2:printf("Tuesday\n");break;
		case 3:printf("Wednesday\n");break;
		case 4:printf("Thursday\n");break;
		case 5:printf("Friday\n");break;
		case 6:printf("Saturday\n");break;
		case 0:printf("Sunday\n");break;
	}
	}
} 

分析:…………

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值