草庐IT

【蓝桥杯】计算指定日期为当年第几天

小沈同学呀 2023-12-14 原文

文章目录

前言

蓝桥杯全国软件和信息技术专业人才大赛由工业和信息化部人才交流中心主办,每年参赛人数超过30000人。蓝桥杯大赛作为国内领先的全国性 IT 学习赛事,持续有力支撑综合测评、奖学金评定、升学考研,是高等教育教学改革和创新人才培养的重要竞赛项目。那么,从今天起我将逐一从简到难解析各大编程算法题。

题目

年m月d日是哪一年的第几天。 比如y年的1月1日是那一年的第一天,那么2000年7月7日是那一年的第几天。

分析

1、问题是计算一年的某天是第几天,由于闰年的二月是29天,故我们需要判断是闰年
2、闰年的判断规则 四年一润,百年不润,四百又润,也就是说能被400整除,被4整除并不能被100整除的都是闰年
3、月份规则 1、3、5、7、8、10、12是大月,有31天;2月平年是28天,闰年是29天;4、6、9、11是小月,有30天

算法

1、根据年份判断是否闰年闰月,如果为闰月需要设置当前月份为29天
2、从1月一次到目标月份进行天数跌加,如果叠加月份小于目标月份,直接增加循环月份天数即可;如果循环月份就是目标月份,直接增加目标月份目标日期天数。

难度

难度较为简单,星级 ★

实战

该题为蓝桥杯简单试题,我们本次实战用JAVA语言演示。

1、创建算法

创建算法

/**
 * 计算当年的第几天
 * @param year
 * @param month
 * @param day
 * @author senfel
 * @date 2023/4/11 10:53
 * @return void
 */
private static int computeDay(int year, int month, int day) {
    if (year == 0 || month == 0 || day == 0) {
        return 0;
    }
    //月份规则 1、3、5、7、8、10、12是大月,有31天;2月平年是28天,闰年是29天;4、6、9、11是小月,有30天
    //闰年规则 四年一润,百不润,四百又润
    //润年2月29天特殊处理,指定月份天数数组
    int mothArr[] ={31,28,31,30,31,30,31,31,30,31,30,31};
    //总天数
    int sum = 0;
    //从第一月依次增加天数至目标月份
    for(int i=0;i<month;i++){
        //当前月份的天数
        int days = mothArr[i];
        if(i == 1){
            //二月判断是否是闰年 索引从0开始故为2月
            if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)){
                //闰年二月为29天
                days = 29;
            }
        }
        if(i < month -1){
            //目标倒数第一月
            sum+=days;
        }else{
            //目标月份
            sum+=day;
        }
    }
    return sum;
}

2、创建测试用例

测试用例

@SpringBootTest
class DemoApplicationTests {
    

    /**
     * 测试计算当前日期为当年第几天算法
     * @author senfel
     * @date 2023/4/11 11:29
     * @return void
     */
    @Test
    void computeDay() {
        //计算
        int sum = DayDemo.computeDay(2023, 12, 31);
        System.err.println("2023-12-31是当年第"+sum+"天");
        int sum2 = DayDemo.computeDay(2024, 12, 31);
        System.err.println("2024-12-31是当年第"+sum2+"天");
        int sum3 = DayDemo.computeDay(2000, 7, 7);
        System.err.println("2000-07-07是当年第"+sum3+"天");
    }

}

3、测试结果

2023-12-31是当年第365天
2024-12-31是当年第366天
2000-07-07是当年第189天

总结

计算当前日期为当年第几天这个试题较为简单,我们只需了解闰年闰月,以及十二月份天数的常识即可。该试题为【蓝桥杯】简单试题,这也可以看出蓝桥杯的试题有很多都很贴近我们生活。

有关【蓝桥杯】计算指定日期为当年第几天的更多相关文章

  1. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  2. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  3. ruby-on-rails - 在 ruby​​ .gemspec 文件中,如何指定依赖项的多个版本? - 2

    我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这

  4. ruby-on-rails - date_field_tag,如何设置默认日期? [ rails 上的 ruby ] - 2

    我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问

  5. ruby - 如果指定键的值在数组中相同,如何合并哈希 - 2

    我有一个这样的哈希数组:[{:foo=>2,:date=>Sat,01Sep2014},{:foo2=>2,:date=>Sat,02Sep2014},{:foo3=>3,:date=>Sat,01Sep2014},{:foo4=>4,:date=>Sat,03Sep2014},{:foo5=>5,:date=>Sat,02Sep2014}]如果:date相同,我想合并哈希值。我对上面数组的期望是:[{:foo=>2,:foo3=>3,:date=>Sat,01Sep2014},{:foo2=>2,:foo5=>5:date=>Sat,02Sep2014},{:foo4=>4,:dat

  6. ruby-on-rails - Ruby 检查日期时间是否为 iso8601 并保存 - 2

    我需要检查DateTime是否采用有效的ISO8601格式。喜欢:#iso8601?我检查了ruby​​是否有特定方法,但没有找到。目前我正在使用date.iso8601==date来检查这个。有什么好的方法吗?编辑解释我的环境,并改变问题的范围。因此,我的项目将使用jsapiFullCalendar,这就是我需要iso8601字符串格式的原因。我想知道更好或正确的方法是什么,以正确的格式将日期保存在数据库中,或者让ActiveRecord完成它们的工作并在我需要时间信息时对其进行操作。 最佳答案 我不太明白你的问题。我假设您想检查

  7. ruby - 检查日期是否在过去 7 天内 - 2

    我的日期格式如下:"%d-%m-%Y"(例如,今天的日期为07-09-2015),我想看看是不是在过去的七天内。谁能推荐一种方法? 最佳答案 你可以这样做:require"date"Date.today-7 关于ruby-检查日期是否在过去7天内,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/32438063/

  8. ruby - 当使用::指定模块时,为什么 Ruby 不在更高范围内查找类? - 2

    我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or

  9. ruby-on-rails - 将 Ruby 中的日期/时间格式化为 YYYY-MM-DD HH :MM:SS - 2

    这个问题在这里已经有了答案:Railsformattingdate(4个答案)关闭4年前。我想格式化Time.Now函数以显示YYYY-MM-DDHH:MM:SS而不是:“2018-03-0909:47:19+0000”该函数需要放在时间中.现在功能。require‘roo’require‘roo-xls’require‘byebug’file_name=ARGV.first||“Template.xlsx”excel_file=Roo::Spreadsheet.open(“./#{file_name}“,extension::xlsx)xml=Nokogiri::XML::Build

  10. ruby - 查找字符串中的内容类型(数字、日期、时间、字符串等) - 2

    我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s

随机推荐