Advertisement
RUNQ_W

黑色星期五c++题目求修正

Oct 19th, 2023 (edited)
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. //题目:用户输入正整数n,n为正整数且不大于400。要求计算从1900年1月1日至1900+n-1年12月31日中13 号落在周一到周日的次数(已知1900年1月1日是星期一)。(可在网上以“黑色星期五 c++”为关键词检索到,是经典题目)我根据别人的代码自己重写了一遍,但是输出结果与原代码不同(原代码输出结果应为正确值),请uu们帮我看看哪里有问题,请予以指正。谢谢!
  2. #include<iostream>
  3. using namespace std;
  4. int main()
  5. {
  6. int m[13],n,d[8]={0},a=6;
  7. cin>>n;
  8. m[1]=m[3]=m[5]=m[7]=m[8]=m[10]=m[0]=31;
  9. m[2]=28;
  10. m[4]=m[6]=m[9]=m[11]=30;
  11. d[6]++;
  12. for(int i=0;i<n;i++){
  13. m[2]=28;
  14. if(((1900+i)%4==0&&(1900+i)%100!=0)||((1900+i)%4==400)){
  15. m[2]=29;
  16. }
  17. for(int j=1;j<=12;j++){
  18. if(i==0&&j==1){
  19. continue;
  20. }
  21. a=(a+m[j-1]%7)%7;
  22. if(a==0) {
  23. a+=7;
  24. }
  25. d[a]++;
  26. }
  27. }
  28. for(int i=1;i<=7;i++){
  29. cout<<d[i]<<" ";
  30. }
  31. return 0;
  32. }
  33. /*
  34. #include<cstdio>
  35. #include<iostream>
  36. #include<cstring>
  37. #include<algorithm>
  38. #include<cmath>
  39. using namespace std;
  40. int n,k=6;
  41. int day[10];
  42. int month[15];//这是我上网搜到的参考解答
  43.  
  44. void fuzhi()
  45. {
  46. month[0]=31;
  47. month[1]=31;
  48. month[2]=28;
  49. month[3]=31;
  50. month[4]=30;
  51. month[5]=31;
  52. month[6]=30;
  53. month[7]=31;
  54. month[8]=31;
  55. month[9]=30;
  56. month[10]=31;
  57. month[11]=30;
  58. }
  59. int main()
  60. {
  61. memset(day,0,sizeof(day));
  62.  
  63. //freopen("in.txt","r",stdin);
  64. scanf("%d",&n);
  65. day[6]++;//1900 1 13 星期六
  66. fuzhi();
  67. for(int i=0;i<n;i++)
  68. {
  69. month[2]=28;//重新更改2月的天数
  70. if ( ((1900+i)%4==0 &&(1900+i)%100!=0) ||(1900+i)%400==0)
  71. {
  72. month[2]=29;
  73. }
  74. for(int j=1;j<=12;j++)
  75. {
  76. if(i==0 && j==1) continue;
  77. k=(k+month[j-1]%7)%7; //计算本月的13为星期几
  78. if(k==0) k=7;
  79. day[k]++;
  80. }
  81. }
  82. for(int i=6;i<=7;i++)
  83. printf("%d ",day[i]);
  84. for(int i=1;i<=5;i++)
  85. printf("%d ",day[i]);
  86. return 0;
  87. }
  88. */
  89.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement