1. #include<iostream>
    2. #include<math.h>
    3. using namespace std;
    4. struct Date
    5. {
    6. int y;//year
    7. int m;//month
    8. int d;//day in month
    9. }date1,date2;
    10. bool isLeap(int y)//判断是否是闰年
    11. {
    12. return y % 4 == 0 && y % 100 != 0 || y % 400 == 0;//真返回为1,假为0
    13. }
    14. int daysOfMonth(int y, int m)
    15. {
    16. int day[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
    17. if (m != 2)
    18. return day[m - 1];
    19. else
    20. return 28 + isLeap(y);
    21. }
    22. int daysOfDate(Date d)//计算一共的天数
    23. {
    24. long days = d.d; //初始化天数
    25. for (int y = 1; y < d.y; y++)//计算年
    26. days += 365 + isLeap(y);
    27. for (int m = 1; m < d.m; m++)//计算月
    28. days += daysOfMonth(d.y, m);
    29. return days;
    30. }
    31. int main() {
    32. char date[20]; char month[3] = { 0 }; char year[3] = { 0 }; char day[3] = {0};
    33. char Month[13][20] = { "January", "February", "March", "Apri", "May"," June"," July", "August", "September", "October", "November","December" }; // 储存月份
    34. int i = 0;
    35. cin >> date;
    36. for (i = 0; i < 2; i++)year[i] = date[i];
    37. for (i = 0; i < 2; i++)month[i] = date[3 + i];
    38. for (i = 0; i < 2; i++)day[i] = date[6 + i];
    39. date1.y = atoi(year);
    40. date1.m = atoi(month);
    41. date1.d = atoi(day);
    42. if (date1.y > 12) { //唯一日期表示
    43. cout <<Month[date1.m - 1] << " " << date1.d << ", "<<date1.y<<endl;
    44. }
    45. else {
    46. for (i = 0; i < 2; i++)month[i] = date[0 + i];
    47. for (i = 0; i < 2; i++)day[i] = date[3 + i];
    48. for (i = 0; i < 2; i++)year[i] = date[6 + i];
    49. date2.y = atoi(year);
    50. date2.m = atoi(month);
    51. date2.d = atoi(day);
    52. cout << abs(daysOfDate(date1) - daysOfDate(date2)) << endl;
    53. }
    54. return 0;
    55. }