日期天数转换.c 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include <stdio.h>
  2. // 函数:判断是否为闰年
  3. int isLeapYear(int year) {
  4. if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
  5. return 1; // 是闰年
  6. else
  7. return 0; // 不是闰年
  8. }
  9. // 函数:计算给定日期是这一年的第几天
  10. int dayOfYear(int year, int month, int day) {
  11. int daysInMonth[] = {31, 28, 31, 30, 31, 30,
  12. 31, 31, 30, 31, 30, 31};
  13. int totalDays = 0;
  14. // 加上之前月份的天数
  15. int m;
  16. for (m = 1; m < month; m++) {
  17. totalDays += daysInMonth[m - 1];
  18. // 对于二月且是闰年,需额外加一天
  19. if (m == 2 && isLeapYear(year))
  20. totalDays++;
  21. }
  22. // 加上当前月份的天数
  23. totalDays += day;
  24. return totalDays;
  25. }
  26. int main() {
  27. int year, month, day;
  28. scanf("%d %d %d", &year, &month, &day);
  29. // 计算该日期是这一年的第几天
  30. int result = dayOfYear(year, month, day);
  31. // 输出结果
  32. printf("%d\n", result);
  33. return 0;
  34. }