1900年为星期一,任意一天求星期几。
#include<stdio.h> int main() { int year,month,day,sum1,sum2,sum3,sum,i,year1; printf("请输入今天的日期,格式1900-1-1。\n"); scanf("%d-%d-%d",&year,&month,&day); year1=year; /*变量重复性使用,考虑是否为初始值,尽量不要让一个变量在连续的操作下使用。*/ if(year<1900) { sum1=0; for(year=year+1;year<1900;year++) { if(year%4==0&&year%100!=0||year%400==0) { sum1=sum1+366; } else { sum1=sum1+365; } } sum2=0; for(i=1;i<month;i++) { if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) { sum2=sum2+31; } else if(i==4||i==6||i==5||i==9||i==11) { sum2=sum2+30; } else if(i==2) { if(year1%4==0&&year1%100!=0||year1%400==0) { sum2=sum2+29; } else { sum2=sum2+28; } } } sum2=sum2+day; if(year1%4==0&&year1%100!=0||year1%400==0) { sum3=366-sum2+1; } else { sum3=365-sum2+1; } sum=sum1+sum3; switch(sum%7) { case 0:printf("您输入的日期为星期一。\n");break; case 1:printf("您输入的日期为星期日。\n");break; case 2:printf("您输入的日期为星期六。\n");break; case 3:printf("您输入的日期为星期五。\n");break; case 4:printf("您输入的日期为星期四。\n");break; case 5:printf("您输入的日期为星期三。\n");break; case 6:printf("您输入的日期为星期二。\n");break; } printf("%d",sum); } else if(year==1900) { for(i=1;i<month;i++) { if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) { sum=sum+31; } else if(i==4||i==6||i==5||i==9||i==11) { sum=sum+30; } else if(i==2) { sum=sum+28; } } sum=sum+day; switch(sum%7) { case 0:printf("您输入的日期为星期日。\n");break; case 1:printf("您输入的日期为星期一。\n");break; case 2:printf("您输入的日期为星期二。\n");break; case 3:printf("您输入的日期为星期三。\n");break; case 4:printf("您输入的日期为星期四。\n");break; case 5:printf("您输入的日期为星期五。\n");break; case 6:printf("您输入的日期为星期六。\n");break; } printf("%d",sum); } else { sum=0; sum1=0; for(year=year-1;year>=1900;year--) { if(year%4==0&&year%100!=0||year%400==0) { sum1=sum1+366; } else { sum1=sum1+365; } } sum2=0; for(i=1;i<month;i++) { if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) { sum2=sum2+31; } else if(i==4||i==6||i==5||i==9||i==11) { sum2=sum2+30; } else if(i==2) { if(year1%4==0&&year1%100!=0||year1%400==0) { sum2=sum2+29; } else { sum2=sum2+28; } } } sum2=sum2+day; sum=sum1+sum2; switch(sum%7) { case 0:printf("您输入的日期为星期日。\n");break; case 1:printf("您输入的日期为星期一。\n");break; case 2:printf("您输入的日期为星期二。\n");break; case 3:printf("您输入的日期为星期三。\n");break; case 4:printf("您输入的日期为星期四。\n");break; case 5:printf("您输入的日期为星期五。\n");break; case 6:printf("您输入的日期为星期六。\n");break; } printf("%d",sum); } return 0; }
实验总结:
变量重复性使用,考虑是否为初始值,尽量不要让一个变量在连续的操作下使用。