105年身心障礙人員四等程式設計概要
四、請寫出下列 C 語言算式:(每小題15分,共30分) (一)假設month 為整數變數。請利用三元運算子寫一個 C 語言算式(expression)。假如 month 的值為一個31 天的月份則算式值等於31,假如 month 的值為一個30天的月份則算式值等於30,假如 month 的值等於2,則算式值等於28,假如 month 的值小於1或是大於12,算式值等於 -1。 (二)假設 year 為整數變數。根據西元曆法,小於4000的西元年,若可以為400整除或是可以被4整除但不被100整除的西元年份者為閏年。請寫一個 C 語言算式 (expression),算式值為真表示 year 年為小於4000的閏年,反之則否。 |
答:
(一)
#include <stdio.h> int main( ) { int month; printf("請輸入月份:"); scanf_s("%d", &month); int result = (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) ? 31 : (month == 4 || month == 6 || month == 9 || month == 11) ? 30 : (month == 2) ? 28 : (month < 1 || month > 12) ? -1 : 0; if (result == -1) { printf("無效的月份值\n"); } else if (result == 0) { printf("無法確定的天數\n"); } else { printf("%d月有%d天\n", month, result); } return 0; } |
執行結果:
請輸入月份:2
2月有28天
(二)
#include <stdio.h> int main( ) { int year; printf("請輸入年份:"); scanf_s("%d", &year); int isLeapYear = (year < 4000) && ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0))); if (isLeapYear) { printf("%d年是閏年\n", year); } else { printf("%d年不是閏年\n", year); } return 0; } |
執行結果:
請輸入年份:2020
2020年是閏年