kid_0203 2015-11-20 14:32 采纳率: 50%
浏览 1695
已采纳

c语言代码问题~~求助~~~~~

设甲乙两人同年出生,但月日不同。请计算甲乙的年龄差的绝对值。例如输入1997 2 27 3 10(表明甲乙出生在1997年,甲出生在2月27日,乙出生在3 月10日),则输出11(甲乙相差11天)

思路:

1、分别计算甲乙的生日是该年的第多少天(分别用n1,n2表示)。计算该年的多少天,可通过函数调用实现;

2、年龄差绝对值计算

 #include<stdio.h>
int fun(int y,int m,int d)
{int s=0;
for(int i=1;i<=m-1;i++)
{switch(i)
{case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:s+=31;
case 4:
case 6:
case 9:
case 11:s+=30;
case 2:if(y%4==0&&y%100!=0||y%400==0) s+=29;
    else s+=28;
}
}
s+=d;
return s;
}
/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */

void main()                      
{  
    int y,m1,d1,m2,d2,n1,n2;  
    scanf("%d%d%d",&y,&m1,&d1);
    scanf("%d%d",&m2,&d2);
    n1=fun(y,m1,d1);
    n2=fun(y,m2,d2);
    if(n1>=n2)
     printf("%d\n",n1-n2);
    else
      printf("%d\n",n2-n1);
}

/* PRESET CODE END - NEVER TOUCH CODE ABOVE */

这个代码是我写的 总会有一个隐藏的测试用例结果错误 不知道代码哪有缺陷 请大神赐教!

  • 写回答

5条回答 默认 最新

  • havedream_one 2015-11-21 00:26
    关注

    if((y%4==0)&&(y%100!=0)||y%400==0)
    case 12... break;
    case 11.... break;
    case 2 .... break
    注意使用break跳出来,
    case 找到符合条件的语句之后,就会依次执行下面的case,所以要有break语句

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?