如何使用switch与if-else嵌套解决,输入日期显示这是这一年的第几天?

img

对这题目没有思路,求大佬解疑。


#include "stdio.h"

void main(){
    
    int month,days;
    printf("请输入2008年的月份:");
    scanf("%d",&month);
    switch(month){
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            days=31;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            days=30;
            break;
        case 2:
            days=29;
            break;
        default:
            printf("请输入1~12的有效月份\n");
            break;
    }
    if(month>=1 && month<=12)
        printf("2008年的%d月有%d天\n",month,days);
} 

代码如下,如有帮助,请帮忙采纳一下,谢谢。

img

#include <stdio.h>
int main()
{
    int year,mon,day;
    int i,sum = 0;
    int arr;
    scanf("%d,%d,%d",&year,&mon,&day);
    
    
    for (i=1;i<mon;i++)
    {
        switch(i)
        {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            arr = 31;break;
        case 4:
        case 6:
        case 9:
        case 11:
            arr = 30;break;
        case 2:
            if(year%4==0 && year%100 != 0 || year%400 == 0)
                arr = 29;
            else
                arr =28;
            break;
        }
        sum += arr;
    }
    sum += day;
    
    printf("%d年%d月%d日是今年的第%d天\n",year,mon,day,sum);
    return 0;
}