资源描述:
《日历计算问题c语言》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、/*题目编号:3题目名称:日历计算问题姓名:陈振孝学号:46*/#include#include#includestructdate{intyear;intmonth;intday;};voidfrontdate(int,int,int,int);voidbackdate(int,int,int,int);intmonthday(int,int);voidzhiding();intmain(){printf("
2、***************************
3、");printf
4、("
5、请输入选项编号(0~3)
6、");printf("
7、***************************
8、");printf("
9、
10、");printf("
11、1---向前数日
12、");printf("
13、2---向后数日
14、");printf("
15、3---指定数日
16、");printf("
17、0---退出
18、");printf("
19、
20、");printf("
21、***************************
22、");while(1){intyear,month,day;intn,nn;printf("请输入选择序
23、号:t");scanf("%d",&nn);if(nn==0)break;if(nn==1){printf("请输入年月日(中间用空号隔开)和向前的天数:");scanf("%d%d%d%d",&year,&month,&day,&n);}if(nn==2){printf("请输入年月日(中间用空号隔开)和向后的天数:");scanf("%d%d%d%d",&year,&month,&day,&n);}switch(nn){case1:frontdate(year,month,day,n);break;case2:backdate(
24、year,month,day,n);break;case3:zhiding();break;case0:exit(-1);break;}}return0;}/*判断大小月份的日数*/intmonthday(inty2,intm2){intday;if(m2==2){if(y2%4==0&&y2%100!=0
25、
26、y2%400==0)day=29;elseday=28;}if(m2==1
27、
28、m2==3
29、
30、m2==5
31、
32、m2==7
33、
34、m2==8
35、
36、m2==10
37、
38、m2==12)day=31;if(m2==4
39、
40、m2==5
41、
42、m2==6
43、
44、m2==9
45、
46、
47、m2==11)day=30;returnday;}/*向前指点*/voidfrontdate(inty1,intm1,intd1,intn){inti,d2;if(nd1){n=n-d1;for(i=m1-1;i>=0;--i){if(i==0){y1=y1-1;i=12;}d2=monthday(y1,i);if(n48、d1=d2;m1=i-1;break;}if(n>d2)n=n-d2;}}printf("向前%d日后的时期是:t",n);printf("%d年%d月%d日",y1,m1,d1);}/*向后数日*/voidbackdate(inty1,intm1,intd1,intn){inti;for(i=1;i<=n;i++){if(monthday(y1,m1)==d1){m1+=1;if(m1==12){y1+=1;m1=1;}d1=1;}elsed1++;}printf("向后%d日后的时期是:t",n);printf("%d年%d月
49、%d日",y1,m1,d1);}/*指定某日*/voidzhiding(){structdatedate1,date2;intdays,days1=0,days2=0;intdaytab[]={0,31,28,31,30,31,30,31,31,30,31,30,31};inti;printf("请输入基准日期(年月日):");scanf("%d%d%d",&date1.year,&date1.month,&date1.day);printf("请输入指定日期(年月日):");scanf("%d%d%d",&date2.yea
50、r,&date2.month,&date2.day);for(i=0;i