題組內容
一、假設已經將變數 int nMonth 的值設定成介於 1~12 間的整數,用來代表 2018 年的某一
月份,亦即 nMonth 為 1 時,代表一月、nMonth 為 2 時,代表二月…依此類推。請依
下列各子題要求分別撰寫出程式片段,在變數 int nDays 中計算出 nMonth 月的天數。
例如 nMonth 是 1 時,nDays 應該是 31;nMonth 是 2 時,nDays 應該是 28。作答時可
以使用 C/C++、Java 或 C#其中任何一種語言作答,但必須註明所採用語言。
⑵使用陣列(array),且不使用 if…else if…else…或 switch。(15 分)
詳解 (共 2 筆)
詳解
以C++為例,以陣列回傳月份對應日數並印出:
#include<stdio.h>
#include<stdlib.h>
int main(){
int Array[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int i,nMonth,nDays;
for(i=0;i<12;i++){
nMonth=i+1;
printf("nMonth為%d時 nDays為%d\n",i+1,Array[i]);
}
return 0;
}
詳解
#include <iostream>
int main() {
int nMonth = 2; // 假設月份是2月
// 陣列索引0不使用,從1開始對應1月至12月的天數
int monthDays[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int nDays;
int nMonth = 2; // 假設月份是2月
// 陣列索引0不使用,從1開始對應1月至12月的天數
int monthDays[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int nDays;
// 假設nMonth是有效的月份(1至12之間)
nDays = monthDays[nMonth];
nDays = monthDays[nMonth];
std::cout << "Month: " << nMonth << " has " << nDays << " days." << std::endl;
return 0;
}
在這個程式碼中,我們建立了一個名為 monthDays 的陣列,其中包含了從1月到12月每個月的天數。然後,我們簡單地使用 nMonth 作為陣列索引來獲取該月份的天數並存儲在 nDays 變數中。這種方法避免了使用 if...else 或 switch 語句,並允許代碼簡潔地獲取結果。由於2018年不是閏年,所以2月份天數設為28天。如果要考慮閏年,那麼需要添加額外的邏輯來判斷。
}
在這個程式碼中,我們建立了一個名為 monthDays 的陣列,其中包含了從1月到12月每個月的天數。然後,我們簡單地使用 nMonth 作為陣列索引來獲取該月份的天數並存儲在 nDays 變數中。這種方法避免了使用 if...else 或 switch 語句,並允許代碼簡潔地獲取結果。由於2018年不是閏年,所以2月份天數設為28天。如果要考慮閏年,那麼需要添加額外的邏輯來判斷。