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

写了段代码,存在逻辑错误,可是我自己又找不到,悠悠们,期待你们火眼金睛啊

#include <stdio.h>
int main() 
{ 
    
    int year = 2008; 		//年 
    int month = 8;			//月 
    int day = 8;   			//日 
    int i;					//FOR循环控制变量 
    int month_day;			//每月的天数 
    int day_num=0;			//需要计算的总天数 
    int month_feb=0;		//设二月30天,若是闰年则该变量为1,减去该变量 
    
    for(i=1;i<=month-1;i++)
    {
    if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10 || i==12)	//判断大月 
    month_day=31;
    
    else if (i==2 || i==4 || i==6 || i==9 || i==11) 			//判断小月 
	month_day=30;
	
    else if((year%4==0 && year%100!=0) || (year%400==0))  			//判断闰年 
	month_feb=1;
    
    day_num=month_day+day_num+day-month_feb;					//计算总天数 
    printf("%d\n",month_day);
    printf("%d\n",month_feb);
    
    }
    printf("2008年8月8日是该年的第%d天",day_num);
	return 0;
}


提问者:扶_桑 2016-05-19 20:28

个回答

  • 脱节
    2016-05-19 21:47:31
    已采纳

    计算总天数的别放在循环内    判断闰年的会导致每循环一次总天数减 1天,还有总天数每循环一次都会加 8 天!

  • 脱节
    2016-05-19 21:51:23

    #include <stdio.h>
    int main() 
    { 
         
        int year = 2008;        //年 
        int month = 8;           //月 
        int day = 8;              //日 
        int i;                 //FOR循环控制变量 
        int month_day = 0;         //每月的天数 
        int day_num=0;         //需要计算的总天数 
        int month_feb=0;       //设二月30天,若是闰年则该变量为1,减去该变量 
         
        for(i=1;i<=month-1;i++)
        {
    	    if(i==1 || i==3 || i==5 || i==7 || i==8 || i==10 || i==12)  //判断大月 
    	    month_day +=31;
    	     
    	    else if (i==2 || i==4 || i==6 || i==9 || i==11)          //判断小月 
    	    month_day +=30;
    	     
    	    if((year%4==0 && year%100!=0) || (year%400==0))             //判断闰年 
    	    month_feb=1;
    	    
        }
        day_num += month_day  + day - month_feb; 
        printf("2008年8月8日是该年的第%d天",day_num);
        return 0;
    }


  • 木头公仔
    2016-05-19 21:31:03

    2月份已经错了。还有判断闰年关月份什么事?else if就错了