这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 高校专区» 岭南EE码农港» 万年历

共2条 1/1 1 跳转至

万年历

菜鸟
2014-11-21 00:04:49 打赏
  1. #include
  2. /*自定义函数说明*/
  3. voidscreen();/*系统主界面*/
  4. voidwhatisit();/*查询某年某月某日是星期几*/
  5. voidleapyear();/*查询某年是否闰年*/
  6. voidprintyearday();/*打印某年的全年日历*/
  7. intIsLeapYear(int);/*判断某年是否为闰年*/
  8. intwhatisita(int,int);/*计算今天是星期几*/
  9. inteverymonth(int,int);/*查询每月最大天数*/
  10. voidprintmonth(int,int);/*打印某年某月日历*/
  11. voidprintmonthday();/*打印某年的某月最大天数*/
  12. voidprintyearmonthday();/*查询某年某月日历*/
  13. /*定义一个判断星期几的指针数组*/
  14. char*week[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
  15. intmain()
  16. {
  17. system("color 2F");/*设置背景颜色为浅绿色*/
  18. printf("制作人ID:2013914215.\n\n");/*个人信息,姓名:庞世聪,学号:2013914215*/
  19. screen();/*万年历的入口*/
  20. getch();
  21. }
  22. /*万年历查询主界面(含部分功能)*/
  23. voidscreen()
  24. {
  25. intn;
  26. while(1)
  27. {
  28. /*万年历的功能*/
  29. printf(" 万年历查询程序:\n");
  30. printf("1:查询某年某月某日是星期几\n");
  31. printf("2:查询某年是否是闰年");
  32. printf("3:打印某年的全年日历");
  33. printf("4:打印某年某月的日历");
  34. printf("5:查询某年某月的最大天数");
  35. printf("6:退出");
  36. printf("请输入要查询的选项: ");
  37. scanf("%d",&n);
  38. switch(n)
  39. {
  40. /*实现相应功能的函数*/
  41. case1:whatisit();break;
  42. case2:leapyear();break;
  43. case3:printyearday();break;
  44. case4:printyearmonthday();break;
  45. case5:printmonthday();break;
  46. case6:return;
  47. default:printf("你输入错误,请按要求输入!!!");break;
  48. }/*end of switch (n)*/
  49. }/*end of while (1)*/
  50. }/*end of void screen ()*/
  51. /*查询某年某月某日是星期几*/
  52. voidwhatisit()
  53. {
  54. inty, m, d, s, k=1, sum, n, i;
  55. charyn;
  56. /*定义一个数组,计算每月的天数*/
  57. inta[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
  58. while(k)
  59. {
  60. printf("请依次输入年,月,日:");
  61. scanf("%d,%d,%d",&y,&m,&d);/*输入要查询的年、月、日*/
  62. s = 0;
  63. for(i = 1; i < m; i++)
  64. {
  65. s = s + a[i];
  66. }
  67. s = s + d;
  68. if(IsLeapYear(y) && m > 2)
  69. {
  70. s = s + 1;
  71. }
  72. sum = s;
  73. n = (y-1 + (y-1)/4-(y-1)/100 + (y-1)/400 + sum) % 7;
  74. printf("%d 年 %d 月 %d 号是: %s.\n",y,m,d,week[n]);
  75. printf("是否要继续查询(Y/N)?");
  76. scanf("%c",&yn);
  77. getchar();
  78. if(yn =='y'|| yn =='Y')
  79. {
  80. k = 1;
  81. }
  82. else
  83. {
  84. k = 0;
  85. }/*end of if (yn == 'y' || yn == 'Y')*/
  86. }/*end of while (k)*/
  87. }/*end of void whatisit()*/
  88. /*判断某年是否是闰年*/
  89. intIsLeapYear(intyear)
  90. {
  91. return(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);/*返回一个整型值0或1*/
  92. }/*end of int IsLeapYear(int year)*/
  93. /*查询某年是否是闰年*/
  94. voidleapyear()
  95. {
  96. inty, k = 1;
  97. charyn;
  98. while(k)
  99. {
  100. printf("请输入要查询的年份: ");
  101. scanf("%d",&y);
  102. if(IsLeapYear(y))/*y是判断标志*/
  103. {
  104. printf("%d 年是闰年!",y);
  105. }
  106. else
  107. {
  108. printf("%d 年不是闰年!\n",y);
  109. }
  110. printf("是否继续查询(Y/N)?");
  111. scanf("%c",&yn); getch();
  112. if(yn =='y'|| yn =='Y')/*是否继续查询入口*/
  113. {
  114. k = 1;/*k是是否继续查询的标志*/
  115. }
  116. else
  117. {
  118. k = 0;
  119. }/*end of if (yn == 'y' || yn == 'Y')*/
  120. }/*end of while (k)*/
  121. }/*end of void leapyear()*/
  122. /*计算当天是星期几*/
  123. intwhatisita(inty,intm)/*whatisita 是有参函数,返回值是整型,y表示年,m表示月*/
  124. {
  125. intn, i;
  126. inta[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, s = 0;
  127. for(i = 1;i < m;i++)/*计算总天数*/
  128. {
  129. s = s + a[i];
  130. }
  131. if(IsLeapYear(y) && m > 2)/*判断是否闰年,如果是闰年就总天数加1天*/
  132. {
  133. s = s + 1;
  134. }
  135. n = (y-1+(y-1)/4-(y-1)/100+(y-1)/400+s+1)%7;
  136. returnn;/*返回值是n*/
  137. }/*end of int whatisita(int y,int m)*/
  138. /*打印某年的全年日历*/
  139. voidprintyearday()
  140. {
  141. inty, value, sum, i, j, k = 1;
  142. charyn;
  143. while(k)
  144. {
  145. printf("请输入查询的日历的年份: ");
  146. scanf("%d",&y);
  147. for(i = 1; i <= 12; i++)
  148. {
  149. printf(" %d年%d月
  150. ",y,i);
  151. value = whatisita(y, i);
  152. sum = everymonth(y, i);
  153. printmonth(value, sum);
  154. printf("\n\n");
  155. }
  156. printf("是否继续查询(Y/N)?");
  157. scanf("%c",&yn); getchar();
  158. if(yn =='Y'|| yn =='y')
  159. {
  160. k = 1;
  161. }
  162. else
  163. {
  164. k = 0;
  165. }
  166. }/*end of while (k)*/
  167. }/*end of void printyearday()*/
  168. /*查询某月最大天数*/
  169. inteverymonth(intyear,intmonth)/*everymonth是有参函数,year是年份,month是月份,返回值是整型*/
  170. {
  171. ints;
  172. staticinta[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  173. s =a [month];
  174. if(IsLeapYear(year) && month == 2)
  175. {
  176. s = s + 1;
  177. }
  178. returns;/*s是返回值*/
  179. }/*end of int everymonth(int year, int month)*/
  180. /*打印某年的某月最大天数函数*/
  181. voidprintmonthday()
  182. {
  183. inty, m, value, k = 1;
  184. charyn;
  185. while(k)
  186. {
  187. printf("请输入查询的年份,月份: ");
  188. scanf("%d,%d",&y,&m);
  189. value = everymonth(y,m);
  190. printf("%d年%d月的最大天数为%d.\n",y,m,value);
  191. printf("是否继续查询(Y/N)?");
  192. scanf("%c",&yn); getchar();
  193. if(yn =='y'|| yn =='Y')
  194. {
  195. k = 1;
  196. }
  197. else
  198. {
  199. k = 0;
  200. }
  201. }/*end of while (k)*/
  202. }/*end of void printmonthday()*/
  203. /*打印月历*/
  204. voidprintmonth(intvalue,intsum)/*printmonth是有参函数,value和sum是参数,无返回值*/
  205. {
  206. intn, i = 0, j;
  207. char*x[7] = {"Sunday","Monday","Tuesday","Wenesday","Thursday","Friday","Saturday"};
  208. for(j = 0; j < 7; j++)
  209. {
  210. printf("%-10s",x[j]);
  211. }
  212. printf("\n");
  213. while(i < value)
  214. {
  215. printf(" ");
  216. i++;
  217. }
  218. for(n = 1; n < 7-value; n++)
  219. {
  220. printf("%-10d",n);
  221. }
  222. while(n <= sum)
  223. {
  224. if((n + value - 1) % 7 == 0)
  225. {
  226. printf("\n");
  227. }
  228. if(n/10 > 0)
  229. {
  230. printf("%-10d",n);
  231. }
  232. else
  233. {
  234. printf("%-10d",n);
  235. }
  236. n++;
  237. }/*end of while (n <= sum)*/
  238. }/*end of void printmonth(int value,int sum)*/
  239. /*查询某年某月日历*/
  240. voidprintyearmonthday()
  241. {
  242. inty, m, value, sum, k = 1;
  243. charyn;
  244. while(k)
  245. {
  246. printf("请输入要查询日历的年份,月份: ");
  247. scanf("%d,%d",&y,&m);
  248. printf(" %d年%d月的日历\n",y,m);
  249. value = whatisita(y,m);/*whatisit 函数返回一个值,返回值是本月的第一天是星期几*/
  250. sum = everymonth(y,m);/*everymonth 函数返回一个值,返回值是本月的最大天数*/
  251. printmonth(value,sum);
  252. printf("\n");
  253. printf("是否继续查询(Y/N)?");
  254. scanf("%c",&yn); getchar();
  255. if(yn =='y'|| yn =='Y')
  256. {
  257. k = 1;
  258. }
  259. else
  260. {
  261. k = 0;
  262. }
  263. }/*end of while (k)*/
  264. }/*end of void printyearmonthday()*/
view plain copy to clipboard print ?
view plain copy to clipboard print ?
view plain copy to clipboard print ?
  1. "http://uphotos.eepw.com.cn/1415793597/pics/f574da662596daafce1d321d4ca9f843.PNG"width="361"height="294">



总结:写程序需要耐心和细心,需要反复检查,防止遗漏。





关键词: 万年历

菜鸟
2014-11-21 09:38:16 打赏
2楼

include后面没有代码?

这个还可以,就是有点审美疲劳了,大家都差不多


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]