阿摩線上測驗 登入

申論題資訊

試卷:105年 - 105年身障特考四等程式設計概要#50187
科目:程式設計
年份:105年
排序:0

題組內容

四、請寫出下列 C 語言算式: (每小題 15 分,共 30 分)

申論題內容

⑴假設 month 為整數變數。請利用三元運算子寫一個 C 語言算式(expression) 。假 如 month 的值為一個 31 天的月份則算式值等於 31,假如 month 的值為一個 30 天 的月份則算式值等於 30,假如 month 的值等於 2,則算式值等於 28,假如 month 的值小於 1 或是大於 12,算式值等於-1。

詳解 (共 4 筆)

詳解 提供者:王煜閔
#include #include int main(void) { int month; int day; scanf("%d", &month); if(month>=1 && month <=12) { if(month == 2) { day = 28; printf("%d", day); } else if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12) { day = 31; printf("%d", day); } else { day = 30; printf("%d", day); } } else { day = -1; printf("%d", day); } return 1; }
詳解 提供者:芷

這題重點應該是三元運算子(?:)

 

#include

int main(void) {

    int day;

    int month;

    for(int i = 0 ; i < 14 ;i++){

        month = i;

        day = (month<1 || month>12 ? -1 :

              (month == 2 ? 28 : 

              (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month== 12 ? 31 :30)));

        printf("%d : %d\n", month, day);

    }

    return 0;

}



輸出為:
0 : -1
1 : 31
2 : 28
3 : 31
4 : 30
5 : 31
6 : 30
7 : 31
8 : 31
9 : 30
10 : 31
11 : 30
12 : 31
13 : -1
詳解 提供者:Sin Cai
int month; 
int days;
if (month>=1 && month<=12){
    if(month ==2){
       days=28;
    }else{
      if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
         days=31;
      }else{
         days=30
      }
    }
}else{
    days=-1;
}
return days;
詳解 提供者:hchungw

在C語言中,使用三元運算子? :可以實現條件選擇。對於給定的month值,我們可以使用嵌套的三元運算子來實現你的要求。下面是根據你的描述寫出的表達式:
c
Copy code
int days = (month < 1 || month > 12) ? -1 :
           (month == 2) ? 28 :
           (month == 4 || month == 6 || month == 9 || month == 11) ? 30 :
           31;
這個表達式首先檢查month是否在有效的月份範圍內(1至12),如果不是,則結果為-1。如果month等於2(二月),則結果為28天(這裡沒有考慮閏年的情況)。接著檢查month是否為4、6、9或11月,這些月份有30天。如果上述條件都不滿足,則假定month為其他月份,即有31天。
注意:這個表達式沒有考慮閏年二月可能有29天的情況,如果需要考慮閏年,則需要添加額外的邏輯來處理。