C++求某日期的昨天、明天并判断两日期是否相等。

梦里梦外; 2023-07-07 11:04 88阅读 0赞

定义一个由年月日构成的日期类型,并设计函数实现以下操作:
①设计函数实现日期类型数据的初始化(三种方式实现:返回值、引用和指针法);
②为了保证输入的日期的合法性,要求设计一个函数对输入的日期进行正确性的检测;
③设计函数求某日期的昨天对应的日期;
④设计函数求某日期的明天对应的日期;
⑤设计函数判断两个日期是否相等。

  1. #include <iostream>
  2. #include <iomanip>
  3. #include <stdlib.h>
  4. using namespace std;
  5. struct Date{
  6. int year,month,day;
  7. };
  8. bool isLeap(int year){
  9. return year%400||(year%4==0&&year%100!=0);
  10. }
  11. int getDayNumberDate(const Date d){
  12. int num;
  13. switch(d.month){
  14. case 4:
  15. case 6:
  16. case 9:
  17. case 11:
  18. num=30;
  19. break;
  20. case 2:
  21. if(isLeap(d.year)){
  22. num=29;
  23. }else{
  24. num=28;
  25. }
  26. case 1:
  27. case 3:
  28. case 5:
  29. case 7:
  30. case 8:
  31. case 10:
  32. case 12:
  33. num=31;
  34. }
  35. return num;
  36. }
  37. bool checkDate(Date d){
  38. bool flag=1;
  39. if(d.year<1000||d.year>9999){
  40. cout<<"输入的年号错误!"<<endl;
  41. flag=0;
  42. }else if(d.month<1||d.month>12){
  43. cout<<"输入的月号错误!"<<endl;
  44. flag=0;
  45. }else{
  46. int num=getDayNumberDate(d);
  47. if(d.day<1||d.day>num){
  48. cout<<"输入的日期错误!"<<endl;
  49. flag=0;
  50. }
  51. }
  52. return flag;
  53. }
  54. void input(Date &d)
  55. {
  56. do{
  57. cout<<"请输入年月日:"<<endl;
  58. cin>>d.year>>d.month>>d.day;
  59. }while(!checkDate(d));
  60. }
  61. void output(const Date d)
  62. {
  63. cout<<d.year<<"年";
  64. cout<<d.month<<"月";
  65. cout<<d.day<<"日";
  66. }
  67. Date yesterday(Date d){
  68. Date t;
  69. t=d;
  70. if(d.day>1){
  71. t.day--;
  72. }else {
  73. if(d.month<=1){
  74. t.month=12;
  75. t.day=31;
  76. t.year--;
  77. }else{
  78. t.month--;
  79. t.day=getDayNumberDate(d);
  80. }
  81. }
  82. return t;
  83. }
  84. Date tomorrow (Date d){
  85. Date r;
  86. r=d;
  87. if(d.day<getDayNumberDate(d)){
  88. r.day++;
  89. }else{
  90. r.day=1;
  91. if(d.month<12){
  92. r.month++;
  93. }else{
  94. r.month=1;
  95. r.year++;
  96. }
  97. }
  98. return r;
  99. }
  100. bool equal(Date t,Date d){
  101. if(t.year==d.year&&t.month==d.month&&t.day==d.day){
  102. cout<<"两个日期相等;"<<endl;
  103. }else{
  104. cout<<"两个日期不相等;"<<endl;
  105. }
  106. }
  107. int main(){
  108. Date d;
  109. input(d);
  110. cout<<"你输入的年月日为:"<<endl;
  111. output(d);
  112. cout<<endl;
  113. Date d3;
  114. d3=yesterday(d);
  115. cout<<"昨天为:"<<endl;
  116. output(d3);
  117. cout<<endl;
  118. Date d1;
  119. d1=tomorrow(d);
  120. cout<<"明天为:"<<endl;
  121. output(d1);
  122. cout<<endl;
  123. Date d2;
  124. input(d2);
  125. equal(d2,d);
  126. return 0;
  127. }

运行结果:
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,88人围观)

还没有评论,来说两句吧...

相关阅读