m0_74438799 2022-10-29 20:17 采纳率: 92.9%
浏览 39
已结题

看下吧,看一下,看看呢

#include<stdio.h>
int main()
{
int y,m,d,c;
scanf("%4d/%2d/%2d",&y,&m,&d);
if(y%4==0&&y%100!=0||y取余400==0)
{
printf("%d",c=29);
}
else
{
printf("%d",c=28);
}
switch(m)
{
case 1:d+=31;
break;
case 2:d+=31+c;
break;
case 3:d+=312+c;
break;
case 4:d+=31
2+c+30;
break;
case 5:d+=313+c+30;
break;
case 6:d+=31
3+c+302;
break;
case 7:d+=31
4+c+302;
break;
case 8:d+=31
5+c+302;
break;
case 9:d+=31
5+c+303;
break;
case 10:d+=31
6+c+303;
break;
case 11:d+=31
6+c+304;
break;
case 12:d+=31
7+c+30*4;
break;
}
printf("%d",d);
return 0;
}

  • 写回答

2条回答 默认 最新

  • XJSFDX_Ali 2022-10-29 20:34
    关注

    你把判断语句改成这行语句试试
    (y%400==0||(y%4==0&&y%100!=0)

    还有几个地方有问题,参考一下这个
    https://blog.csdn.net/m0_66411584/article/details/127542756?spm=1001.2014.3001.5502

    #include<stdio.h>
    int main()
    {
    int y,m,d,n=0;
    int c,b=0;
    scanf("%d %d %d",&y,&m,&d);
    while(b<m){
        switch(b){
        case 0:c=d;break;
        case 1:c=31;break;
        case 2:c=29;break;
        case 3:c=31;break;
        case 4:c=30;break;
        case 5:c=31;break;
        case 6:c=30;break;
        case 7:c=31;break;
        case 8:c=31;break;
        case 9:c=30;break;
        case 10:c=31;break;
        case 11:c=30;break;
        case 12:c=31;break;
        }
        n=n+c;
        b++;
    }
    if((y%400==0||(y%4==0&&y%100!=0))&&m>2)  //是闰年且月份大于2方加一 
    n++;
    printf("%d-%d-%d是第%d天\n",y,m,d,n);
    return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月14日
  • 已采纳回答 11月6日
  • 创建了问题 10月29日