终于写对了,欢迎借鉴

来源:4-17 switch与if语句的应用

qq_慕函数9094777

2020-12-13 23:59

#include <stdio.h>

int main()

{

int year = 2008;

int month =8;

int day = 8;

int sum;

switch(month)

{

case 1:sum = 0;break;

case 2:sum = 31;break;

case 3:sum = 59;break;

case 4:sum = 90;break;

case 5:sum = 120;break;

case 6:sum = 151;break;

case 7:sum = 181;break;

case 8:sum = 212;break;

case 9:sum = 243;break;

case 10:sum = 273;break;

case 11:sum = 304;break;

case 12:sum = 334;break;

case 13:sum = 365;break;

default:

printf("%s\n","一年当中有12个月");

break; 

}

if(year%4==0 && year%100!=0)

{

sum += (day+1);

}

else

{

sum += day;

}

printf("%d年%d月%d日是该年的第%d天\n",year,month,day,sum);

return 0;

}


写回答 关注

3回答

  • 弥丶漫
    2021-02-05 11:01:18

    这样更方便看些:


    #include <stdio.h>

    int years_month_day(int years,int months);

    int days;

    int main() 

        /* 定义需要计算的日期 */

        int year = 2008;

        int month = 8;

        int day = 8;

        /*

         * 请使用switch语句,if...else语句完成本题

         * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”

         * 小编还是希望大家独立完成哦~

         */

    int i,j;

    int year_month_day=0; //记录2008-8-8日所在该年的天数

    for(i=1;i<month;i++) //8月前的天数(不包含8月)

    {

    years_month_day(year,i); //刷新days天数

    year_month_day += days; //叠加月份天数

    printf("%d月有%d天,现在叠加天数是%d天\n",i,days,year_month_day);

    }

    year_month_day += 8 ; //加上最后的8天

        printf("%d年%d月%d日是该年的第%d天\n",year,month,day,year_month_day);

        

    return 0;

    }

    int years_month_day(int years,int months)

    {

        //通过调用该函数来判断该月的天数

        switch(months)

        {

            //将两个特殊的月份提出来

            case 2:

                if( years%100==0 && years%400==0 || years%4==0 && years%100!=0) //判断是否是闰年,闰年2月29天,平年28

                {days=29;}

                else

                {days=28;}

    break;

            case 8:

                days=31;

    break;

            //判断其他月份天数,默认奇数为31天,偶数为30天

            default:

                if(months % 2 == 0) //该月份为偶数

                {days=30;}

                else

                {days=31;}

    break;

        }

    return 0;

    }


  • 弥丶漫
    2021-02-05 11:00:32

    或者使用我的,能够判断年份来计算天数:

    #include <stdio.h>int years_month_day(int years,int months);int days;int main() {     /* 定义需要计算的日期 */    int year = 2008;    int month = 8;    int day = 8;    /*     * 请使用switch语句,if...else语句完成本题     * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”     * 小编还是希望大家独立完成哦~     */	int i,j;	int year_month_day=0;	//记录2008-8-8日所在该年的天数	for(i=1;i<month;i++)	//8月前的天数(不包含8月)	{		years_month_day(year,i);	//刷新days天数		year_month_day += days;		//叠加月份天数		printf("%d月有%d天,现在叠加天数是%d天\n",i,days,year_month_day);	}	year_month_day += 8 ;	//加上最后的8天	    printf("%d年%d月%d日是该年的第%d天\n",year,month,day,year_month_day);    	return 0;}int years_month_day(int years,int months){    //通过调用该函数来判断该月的天数    switch(months)    {        //将两个特殊的月份提出来        case 2:            if( years%100==0 && years%400==0 || years%4==0 && years%100!=0)	//判断是否是闰年,闰年2月29天,平年28            {days=29;}            else            {days=28;}			break;        case 8:            days=31;			break;        //判断其他月份天数,默认奇数为31天,偶数为30天        default:            if(months % 2 == 0) //该月份为偶数            {days=30;}            else            {days=31;}			break;    }	return 0;}


  • 墨染青衣颜9072882
    2020-12-19 16:14:34

    #include <stdio.h>

    int main() 

        int year = 2008;

        int month = 8;

        int day = 8;

        int i,j;

        if(year%100==0&&year%400==0||year%4==0&&year%100!=0)i=1;

        else i=0;

        switch(month)

        {

            case 1:j=day;break;

            case 2:j=31+ day;break;

            case 3:j=31+ 28+ day;break;

            case 4:j=31+ 28+ 31+ day;break;

            case 5:j=31+ 28+ 31+ 30+ day;break;

            case 6:j=31+ 28+ 31+ 30+ 31+ day;break;

            case 7:j=31+ 28+ 31+ 30+ 31+ 30+ day;break;

            case 8:j=31+ 28+ 31+ 30+ 31+ 30+ 31+day;break;

            case 9:j=31+ 28+ 31+ 30+ 31+ 30+ 31+ 31+ day;break;

            case 10:j=31+ 28+ 31+ 30+ 31+ 30+ 31+ 31+ 30+day;break;

    我的也对了

            case 11:j=31+ 28+ 31+ 30+ 31+ 30+ 31+ 31+ 30+ 31+day;break;

            case 12:j=31+ 28+ 31+ 30+ 31+ 30+ 31+ 31+ 30+ 31+ 30+ day;break;

        }

        if(i==1)j+=1;

        printf("%d年%d月%d日是该年的第%d天",year,month,day,j);

        return 0;

    }


C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926025 学习 · 20793 问题

查看课程

相似问题