在1970-9999年之间输入一个日期实现输出星期几

来源:互联网 发布:外汇账户数据采集规范 编辑:程序博客网 时间:2024/06/05 08:41

程序很简单就直接贴代码:

#include<stdio.h>int main(){int year;int month;int day;int week;long int x;int y;int z;int n;long int p;int sum=0;int i=1970;int  k=0;scanf("%d-%d-%d",&year,&month,&day);if(year<1970||year>9999){printf("year is error.\n");return 0;} else{ while(year>i){if((i%4==0&&i%100!=0)||i%400==0){k++;}i++;}}n=year-1970;x=366*k+365*(n-k);if(month>12||month<0){printf("month is error.\n");return 0;}else{if((year%4==0&&year%100!=0)||year%400==0){int a1[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};for(i=0;i<month;i++)sum+=a1[i];}else{int a2[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};for(i=0;i<month;i++)sum+=a2[i];}y=sum;}if(day<0){printf("day is error.\n");return 0;} else {if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){if(day>31){printf("day is error.\n");return 0;}}else if (month==4||month==6||month==9||month==11){if(day>30){printf("day is error.\n");return 0;}}if((year%4==0&&year%100!=0)||year%400==0){if(month==2){if(day>29) {printf("day is error.\n");return 0;}}}else{if(month==2){if(day>28) {printf("day is error.\n");return 0;}}}}z=day;p=x+y+z-4;week=p%7;switch (week){case 0: printf("Sunday\n");   break;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;}return 0;}


0 0