《C语言中用switch语句输出给定的某年某月的天数》

发布时间:2019-08-15 14:33:19

 程序如下:#include<stdio.h>**

 main()

{

    int year,mon,days,leap;

    printf("年,月:");

    scanf("%4d%2d",&year,&mon);

    switch(mon)

    {

    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:if(year%4==0&&year%100!=0||year%400==0)

               leap=1;

        else 

               leap=0;

        if(leap)

            days=29;

        else days=28;

    }

    printf("%d年%月的天数为%天\n",year,mon,days);

 }

但不知道为何出不来结果?求大佬告知

推荐回答

程序的问题是

1.

  scanf("%4d%2d",&year,&mon);

scanf一般不用%4d这样的格式 ,只用%d

因为若你用这样的格式

你的输入必须是

200910

这样的,而不能用

2009 10

而你的输入,更是不对,你输入是的有逗号分开的,若你要这样输入,程序必须为

  scanf("%d,%d",&year,&mon); //scanf也要用逗号,且不要用数字

2.你的输出完全不对,少%d了,正确的

    printf("%d年%d月的天数为%d天\n",year,mon,days);

其他回答

int daysofmonth(int yer,int month){switch(month){case 1:case 3:case 5:case 7:case 8:case 10:case 12:return 31;case 4:case 6:case 9:case 11:return 30;case 2:return (year%400==0)||((year%4==0)&&(year%100<>0))?29:28;}}void main(){int y,m;cout<<"请输入年,月\n";cin>>y>>m;cout<<y<<"年"<<m<<"月有"<<daysofmonth(y,m)<<"天";}

以上问题属网友观点,不代表本站立场,仅供参考!