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