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