Q. (親愛的chatGPT…)請幫我撰寫一個C++程式,輸入西元年月日,以及經過多少天,可以輸出相應的西元年月日。
A. 以下是一個C++程式,可以根據輸入的西元年月日和經過的天數,計算出相應的新的西元年月日。
// 判斷是否為閏年的函數
bool isLeapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
return true;
} else {
return false;
}
}
// 計算每個月的天數
int daysInMonth(int year, int month) {
switch (month) {
case 1: // January
case 3: // March
case 5: // May
case 7: // July
case 8: // August
case 10: // October
case 12: // December
return 31;
case 4: // April
case 6: // June
case 9: // September
case 11: // November
return 30;
case 2: // February
if (isLeapYear(year)) {
return 29;
} else {
return 28;
}
default:
return -1; // 如果月份不在1-12範圍內,返回錯誤碼
}
}
// 計算新的日期
void calculateNewDate(int year, int month, int day, int daysToAdd,
int& newYear, int& newMonth, int& newDay) {
// 先把原來的日期加上經過的天數
newYear = year;
newMonth = month;
newDay = day + daysToAdd;
// 當新的日期超過了當月的天數,需要進行日期調整
while (newDay > daysInMonth(newYear, newMonth)) {
newDay -= daysInMonth(newYear, newMonth); // 減去本月天數
newMonth++; // 月份加一
// 如果月份超過12,則進入新的一年
if (newMonth > 12) {
newMonth = 1; // 月份歸1
newYear++; // 年份加一
}
}
}
int main() {
int year, month, day;
int daysToAdd;
// 輸入西元年月日和經過的天數
std::cout << "請輸入西元年份: ";
std::cin >> year;
std::cout << "請輸入月份: ";
std::cin >> month;
std::cout << "請輸入日期: ";
std::cin >> day;
std::cout << "請輸入經過的天數: ";
std::cin >> daysToAdd;
int newYear, newMonth, newDay;
// 計算新的日期
calculateNewDate(year, month, day, daysToAdd, newYear, newMonth, newDay);
// 輸出結果
std::cout << "新的日期為: " << newYear << "年" << newMonth << "月" << newDay << "日" << std::endl;
return 0;
}
Q. 這個函式的&
在幹嘛?
void calculateNewDate(int year, int month, int day, int daysToAdd, int& newYear, int& newMonth, int& newDay)
A. 這是傳參考的用法,歡迎搶先閱讀3 - 1 指標與函式。
Q. 可以傳陣列到函式裡面嗎?
A. 需要瞭解一些原理和規則,歡迎搶先閱讀3 - 2 指標與陣列。
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up