问答详情
源自:4-17 switch与if语句的应用

加了个循环,可以不?

#include <stdio.h>
int main()
{
    /* 定义需要计算的日期 */
    int year = 2008;
    int month = 8;
    int day = 8;
    /*
     * 请使用switch语句,if...else语句完成本题
     * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”
     * 小编还是希望大家独立完成哦~
     */
    int sum=0;
    int i;
    int advance=month-1;
    for(i=1;i<=advance;i++){
        switch(i){
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            sum+=31;
            break;
        case 2:
            if(year%4==0&&year%100!=0||year%400==0){
                sum+=29;
            }else{
                sum+=28;
            }
            break;
        default:
            sum+=30;
            break;
    }
    
    }
    sum+=day;
    
    printf("2008年8月8日是该年的第%d天",sum);

    return 0;
}

提问者:教练我要学习 2018-07-01 03:04

个回答

  • kirito_yes
    2018-07-03 14:06:17

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


  • kirito_yes
    2018-07-03 14:02:50

    你的跟我挺类似的,不过我感觉我的更简洁一点

  • qq_First_Creato_0
    2018-07-02 15:50:05

    你知道每月的天都是30吗?妹纸,那用switch 做啥