NaaN日記

やったこと、覚えたことを発信する場

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以降を予定