阿摩線上測驗 登入

申論題資訊

試卷:107年 - 107 身心特考_四等_資訊處理:程式設計概要#68998
科目:程式設計
年份:107年
排序:0

題組內容

一、假設已經將變數 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 筆)

詳解 提供者:白龍@菜鳥公務員(107/10/29)

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;

}

詳解 提供者:hchungw
#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;
    // 假設nMonth是有效的月份(1至12之間)
    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天。如果要考慮閏年,那麼需要添加額外的邏輯來判斷。