6-4 求天数

本题要求实现一个函数sumday,可计算输入的日期是这年中的第几天。

函数接口定义:

int sumday(int year,int month,int day);

小贴士:这题有复杂做法,也有简单做法,关键是因为思路不同,算法不同,代码是顺着你的算法走的,代码是算法步骤的翻译,因此复杂的不是代码问题,是你的算法设计问题。

简单的做法:需要借助数组这种存储结构。一年只有365天和366天两种,区别就是平年2月28天,闰年2月是29天。因此把12个月的天数,用数组保存下来,2月存28天。如果判断year那一年是闰年,就把数组对应的2月改为29天,其他月不变。接下来用一个单循环来循环把每个月天数加起来,直到加到month对应的月。

这题的设计思路体现了算法+数据结构的理念。我的算法借助了数组这种存储结构,二者配合得到好的设计

裁判测试程序样例:才能落地生成好的代码。

#include<stdio.h>

int sumday(int year,int month,int day);

int main()
{
    int year,month,day,days;
    scanf("%d/%d/%d",&year,&month,&day);
    days=sumday(year,month,day);
    printf("%d",days);
    return 0;
}


/* 请在这里填写答案 */

答案

int sumday(int year,int month,int day)
{
    int a[13],b[13],i,rq=0;
    {a[1]=31;a[2]=28;a[3]=31;a[4]=30;a[5]=31;a[6]=30;a[7]=31;a[8]=31;a[9]=30;a[10]=31;a[11]=30;a[12]=31;}
    {b[1]=31;b[2]=29;b[3]=31;b[4]=30;b[5]=31;b[6]=30;b[7]=31;b[8]=31;b[9]=30;b[10]=31;b[11]=30;b[12]=31;}
    if((year%4==0 && year%100!=0)||year%400==0)
    {
        for(i=1;i<month;i++)
            rq+=b[i];
    }
    else
    {
        for(i=1;i<month;i++)
            rq+=a[i];
    }
    rq=rq+day;
    return rq;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值