力扣1185
我的答案:(变量名随便起的,不规范)
class Solution { public: string dayOfTheWeek(int day, int month, int year) { std::string site[7] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}; int year2 = 1971, year1 = 0; int num = 5, cishu = 0, result = 0,xunhuan = 0,i = 0, res, ress; year1 = year; xunhuan = year - year2; while (xunhuan >= 1) { ++year2; if (year < 1971 || year > 2100) { return 0; } if (((year2 - 1) % 4 == 0 && (year2 - 1) % 100 != 0) || (year2 - 1) % 400 == 0) { res = (num + 366) / 7; ress = (num + 366) - res * 7; if (ress == 0) { num = num + 2; } else { num = ress; } } else { res = (num + 365) / 7; ress = (num + 365) - res * 7; if (ress == 0) { num = num + 1; } else { num = ress; } } xunhuan = year - year2; } //一年有12个月,其中1月、3月、5月、7月、8月、10月、12月每个月都有31天 //4月、6月、9月、11月每个月都有30天 120,2月份平年有28天,闺年有29天 if ((year1 % 4 == 0 && year1 % 100 != 0) || year1 % 400 == 0) { i = 29; } else { i = 28; } switch (month) { case 1: cishu = day / 7; result = (day) - (cishu * 7) - 1; num = num + result; if (num >= 8) { num = num - 7; } else if (day == 1) { num = num; } break; case 2: day = day + 31; cishu = day / 7; result = (day) - (cishu * 7) - 1; num = num + result; if (num >= 8) { num = num - 7; } else if (day == 1) { num = num; } break; // 可选的 case 3: day = day + 31 + i; cishu = day / 7; result = (day) - (cishu * 7) - 1; num = num + result; if (num >= 8) { num = num - 7; } else if (day == 1) { num = num; } break; case 4: day = day + 31 + i + 31; cishu = day / 7; result = (day) - (cishu * 7) - 1; num = num + result; if (num >= 8) { num = num - 7; } else if (day == 1) { num = num; } break; case 5: day = day + 31 + i + 31 + 30; cishu = day / 7; result = (day) - (cishu * 7) - 1; num = num + result; if (num >= 8) { num = num - 7; } else if (day == 1) { num = num; } break; case 6: day = day + 31 + i + 31 + 30 + 31; cishu = day / 7; result = (day) - (cishu * 7) - 1; num = num + result; if (num >= 8) { num = num - 7; } else if (day == 1) { num = num; } break; case 7: day = day + 31 + i + 31 + 30 + 31 + 30; cishu = day / 7; result = (day) - (cishu * 7) - 1; num = num + result; if (num >= 8) { num = num - 7; } else if (day == 1) { num = num; } break; case 8: day = day + 31 + i + 31 + 30 + 31 + 30 + 31; cishu = day / 7; result = (day) - (cishu * 7) - 1; num = num + result; if (num >= 8) { num = num - 7; } else if (day == 1) { num = num; } break; case 9: day = day + 31 + i + 31 + 30 + 31 + 30 + 31 + 31; cishu = day / 7; result = (day) - (cishu * 7) - 1; num = num + result; if (num >= 8) { num = num - 7; } else if (day == 1) { num = num; } break; case 10: day = day + 31 + i + 31 + 30 + 31 + 30 + 31 + 31 + 30; cishu = day / 7; result = (day) - (cishu * 7) - 1; num = num + result; if (num >= 8) { num = num - 7; } else if (day == 1) { num = num; } break; case 11: day = day + 31 + i + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31; cishu = day / 7; result = (day) - (cishu * 7) - 1; num = num + result; if (num >= 8) { num = num - 7; } else if (day == 1) { num = num; } break; case 12: day = day + 31 + i + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30; cishu = day / 7; result = (day) - (cishu * 7) - 1; num = num + result; if (num >= 8) { num = num - 7; } else if (day == 1) { num = num; } break; } switch (num) { case 1: return site[0]; break; case 2: return site[1]; break; case 3: return site[2]; break; case 4: return site[3]; break; case 5: return site[4]; break; case 6: return site[5]; break; case 7: return site[6]; break; } return site[6]; } };