题目:1900年1月1日是星期一,假如在1995年5月30日埋下一颗定时985天的炸弹,问几月几日星期几爆炸?假如1991年3月4日埋下一颗定时9764天的炸弹,问几月几日星期几爆炸!
1 #include<stdio.h> 2 #include<string.h> 3 int leap(int year) 4 { 5 if(year%4==0&&year%100!=0||year%400==0) 6 //①普通年能被4整除且不能被100整除的为闰年。②世纪年能被400整除的是闰年。 7 return 1;//是闰年返回1 8 return 0;//不是闰年返回0 9 } 10 int date(int o_yea,int o_mon,int o_day,int n_yea,int n_mon,int n_day) 11 { 12 int day=0; 13 int i; 14 int a[]={0,31,28,31,30,31,30,31,31,30,31,30,31};//平年 15 int b[]={0,31,29,31,30,31,30,31,31,30,31,30,31};//闰年 16 for(i=o_yea;i<=n_yea-1;i++)//整年计算 17 if(leap(i)==0) 18 day+=365; 19 else 20 day+=366; 21 for(i=1;i<=n_mon-1;i++)//新整月计算 求和 22 if(leap(n_yea)==0) 23 day+=a[i]; 24 else 25 day+=b[i]; 26 for(i=1;i<=o_mon-1;i++)//旧整月计算 求差 27 if(leap(o_yea)==0) 28 day-=a[i]; 29 else 30 day-=b[i]; 31 day+=n_day;//新零头天数 求和 32 day-=o_day;//旧零头天数 求差 33 return day; 34 } 35 void week(int y,int m,int d) 36 { 37 char weeks[7][7]={"星期一","星期二","星期三","星期四","星期五","星期六","星期天"}; 38 printf("%s\n",weeks[date(1900,1,1,y,m,d)%7]); 39 } 40 main() 41 { 42 int o_yea,o_mon,o_day,n_yea,n_mon,n_day; 43 int a[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; 44 int b[]={0,31,29,31,30,31,30,31,31,30,31,30,31}; 45 int i,j,k,days; 46 Begain: 47 printf("请输入埋放炸弹时间(yyyy mm dd):\n"); 48 scanf("%d %d %d",&o_yea,&o_mon,&o_day); 49 printf("请输入多少天后爆炸:\n"); 50 scanf("%d",&days); 51 for(i=1900;i<=2100;i++) 52 for(j=1;j<=12;j++) 53 for(k=1;k<=(leap(i)?b[j]:a[j]);k++) 54 if(days==date(o_yea,o_mon,o_day,i,j,k)) 55 { 56 n_yea=i; 57 n_mon=j; 58 n_day=k; 59 goto Display; 60 } 61 Display: 62 printf("%d年%d月%d日",n_yea,n_mon,n_day); 63 week(n_yea,n_mon,n_day); 64 goto Begain; 65 }