breakを使わないswitch(C)
西暦・月・日を入力して、
12月31日までの日数を答えるプログラムを作ってるときに、
breakを使わないswitch文でいけるんじゃね?と思って、
やってみた。
構造としては、
case 月:
の形で、1月だと2月、3月……と12月まで流れていく。
それぞれの月でその月に計何日あるかを残り日数の変数に足す。
日本語が難しい
#include <stdio.h> int main(void){ int y, m, d; //左から西暦、月、日 int day = 0; //残り日数 scanf("%d %d %d", &y, &m, &d); switch(m){ case 1: day += 31; case 2: if (y%400 == 0 || (y%4 == 0 && y%100 != 0)){ day++; //閏年の時、1日増やす } day += 28; case 3: day += 31; case 4: day += 30; case 5: day += 31; case 6: day += 30; case 7: day += 31; case 8: day += 31; case 9: day += 30; case 10: day += 31; case 11: day += 30; case 12: day += 31; day -= d; break; } printf("12月31日まで残り%d日\n", day); return 0; }
只今ブログ休止中です。
再開は7/19以降を予定