4_32.cpp
上传用户:zipjojo
上传日期:2009-07-20
资源大小:70k
文件大小:1k
源码类别:

文章/文档

开发平台:

C/C++

  1. # include <stdio.h>
  2. # include <math.h>
  3. void printmonth(int m);
  4. void printhead(int m);
  5. int daysofmonth(int m);
  6. int firstday(int y);
  7. int year,weekday;
  8. void main()
  9. {
  10. int i;
  11. printf("请输入年份:");
  12. scanf("%d",& year);
  13. weekday=firstday(year);
  14. printf("nn");
  15. printf("                 %d年n",year); 
  16. for(i=1;i<=12;i++)
  17. {
  18. printmonth(i);
  19. printf("n");
  20. }
  21. printf("nn");
  22. }
  23. void printmonth(int m)  //打印每月日历
  24. {
  25. int i,days;
  26. printhead(m);
  27. days=daysofmonth(m);
  28. for(i=1;i<=days;i++)
  29. {
  30. printf("%5d",i);
  31. weekday=(weekday+1)%7;
  32. if (weekday==0) printf("n   ");
  33. }
  34. }
  35. void printhead(int m) //打印每月的日历头(判定起始位置)
  36. {
  37. int i;
  38. printf("n%d月   日   一   二   三   四   五   六n",m);
  39. printf("   ");
  40. for(i=0;i<weekday;i++)
  41. printf("     ");
  42. }
  43. int daysofmonth(int m)  //每月的天数
  44. {
  45. switch (m)
  46. {
  47. case 1:
  48. case 3:
  49. case 5:
  50. case 7:
  51. case 8:
  52. case 10:
  53. case 12:return 31;
  54. case 4:
  55. case 6:
  56. case 9:
  57. case 11:return 30;
  58. case 2:if (((year%4==0 && year%100!=0)||year%400==0))
  59.    return 29;
  60.    else 
  61.    return 28;
  62. default: return 0;
  63. }
  64. }
  65. int firstday(int y)  //判断某年元旦是星期几
  66. {
  67. double s ;
  68. s=floor(year-1+(year-1)/4.0-(year-1)/100.0+(year-1)/400.0+1);
  69. return (int)s%7;
  70. }