wangnianli.cpp
上传用户:clotteng
上传日期:2022-07-23
资源大小:1k
文件大小:2k
源码类别:

打印编程

开发平台:

Visual C++

  1. #include<stdio.h>
  2. void disp(int);
  3. int leap_year(int);
  4. int date(int,int,int);
  5. void main()
  6. {
  7. int year=0;
  8. printf("Input year(XXXX):");
  9. scanf("%d",&year);
  10. disp(year);
  11. }
  12. int leap_year(int year)//判断是否是闰年
  13. {
  14. if((year%4==0&&year%100!=0)||(year%400==0))
  15. return(1);
  16. else
  17. return(0);
  18. }
  19. int date(int year,int month,int day)//计算某年某月某日是星期几
  20. {
  21. int leap,days,sum;//days计算某个日期起,这一年的天数
  22. days=0;
  23. leap=leap_year(year);
  24. switch(month-1)
  25. {
  26. case 11:days+=30;
  27. case 10:days+=31;
  28. case 9:days+=30;
  29. case 8:days+=31;
  30. case 7:days+=31;
  31. case 6:days+=30;
  32. case 5:days+=31;
  33. case 4:days+=30;
  34. case 3:days+=31;
  35. case 2:if(leap)
  36.    days+=29;
  37. else
  38. days+=28;
  39. case 1:days+=31;
  40. default:days+=day;
  41. }
  42. sum=year-1+(year-1)/4-(year-1)/100+(year-1)/400+days;//这是工式,计算sum这天是星期几,用总的天数模除7
  43. return(sum%7);
  44. }
  45. void disp(int year)//打印输出算法
  46. {
  47. int i,j,k,leap,days,count,n;
  48. leap=leap_year(year);
  49. days=date(year,1,1);//计算某年的第一天是星期几
  50. printf("%d年n",year);
  51. for(i=1;i<=12;i++)
  52. {
  53. printf("%3d月份n",i);
  54. printf("n");
  55. printf("t");
  56. printf("%-8s%-8s%-8s%-8s%-8s%-8s%-8sn","Sun","Mon","Tues","Wed","Thurs","Fri","Sat");//格式化输出字符串
  57. n=days;
  58. printf("t");
  59. for(j=1;j<=8*days;j++)
  60. printf(" ");//输出空格,为了让数字与日期对齐
  61. switch(i)
  62. {
  63. case 1:
  64. case 3:
  65. case 5:
  66. case 7:
  67. case 8:
  68. case 10:
  69. case 12:count=31;
  70. break;
  71. case 4:
  72. case 6:
  73. case 9:
  74. case 11:count=30;
  75. break;
  76. case 2:
  77. if(leap)
  78. count=29;
  79. else
  80. count=28;
  81. break;
  82. }
  83. for(k=1;k<=count;k++)//控制界面对齐
  84. {
  85. printf("%-8d",k);//从每个月的1号开始输出
  86. n++;
  87. if(n==7)
  88. {
  89. printf("n");
  90. printf("t");
  91. n=0;
  92. }
  93. }
  94. printf("nn");
  95. days=n;
  96. }
  97. }