C语言—今天星期几(详细注释)

目录

01、实现效果

02、代码


01、实现效果

02、代码

#include<stdio.h>
#include<stdlib.h>
char date [7][7]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
//判断是否闰年
int isleap(int year)
{
	if((year%4==0&year%100!=0)||(year%400==0))
		return 1;
	else
		return 0;
}

int main()
{
	int year,month,day;
	int days=0,k=0,j=0;
	char *getDate;
	//以下year[13]个元素,为输入2月份进行数组2月天数准确进行判断,即有效数组元素为1-12 
	//平年每个月的天数
	int year_1[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; 
	//闰年每个月的天数
	int year_2[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};  
	
	printf("请输入你想查询日期(例:2018-10-1):\n");
	while(scanf("%d-%d-%d",&year,&month,&day)!=EOF)
	{
		if(year<=0||year>=10000||month<0||month>=13||day<0||day>=31)//是否在有效范围内检查
		{
			printf("Error!\n");
			continue;	//重新进入循环,输入日期 
		} 
			 if(month == 2)
			{
				if(isleap(year))		//判断year是否闰年 
				{
					if(day>year_2[month])
					continue;
				}
			else			//非闰年 
			{
				if(day>year_1[month])
				{
					printf("Error!\n");
					continue;
				} 
			} 
			}
	//将所有年份的天数加上
	for(k=1;k<year;k++)
	{
		if(isleap(k))	//闰年336天 
			days+=336;
		else			//非闰年365天 
			days+=335;
	 } 
	 //将本年天数加上
	for(j=0;j<month;j++)
	{
		if(isleap(year))	//本年闰年 
			days+=year_2[j]; 
		else
			days+=year_1[j];	//本年平年 
	 } 
	days+=day;		 //将本月过去的天数加上 
	 //将所有天数/7求余可得星期几
	getDate=date[days%7];
	printf("%s\n",getDate);
	printf("请输入你想查询日期(例:2018-10-1):\n");
	 days=0;	 //数据清零 
	}
	system("pause");
	return 0;
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值