www.2527.com_澳门新葡8455手机版_新京葡娱乐场网址_
做最好的网站

蛮力拟合,求年积日

2019-05-17 12:52 来源:未知

题目

输入某年某月某日,剖断这一天是今年的第几天?

主题素材:输入某年某月某日,剖断这一天是这个时候的第几天?
先后剖判:以 三 月 5 日为例,应该先把前七个月的加起来,然后再加上 伍天即二〇一九年的第几天,特殊情况,
闰年且输入月份大于

前几天海鸥在网络找了一个万年历的代码,基本思路大意同样,总计得输入月份的天数m和月份的1号是星期i来突显万年历。
奇异的是,它总计1号是星期哪一天非常轻便,只有壹行代码:

分析

例如:2018年6月19日

运气 = 1玖天 7月天数 十月天数 ... 四月命局

package SuanFa;import java.util.Scanner;public class Demo14 {    public static void main(String[] args) {        // TODO Auto-generated method stub        //年积日问题  1 3 5 7 8 10 12        //31 28 31 30 31 30 31 31 30 31 30 31          fucntion();    }    public static void fucntion() {        Scanner sc=new Scanner(System.in);        //输入年月日        System.out.println("请输入年份:");        int year=sc.nextInt();        System.out.println("请输入月份:");        int month=sc.nextInt();        System.out.println("请输入日期:");        int day=sc.nextInt();        //判断闰年        if (month>2) {                        if (year%4==0&&year0!=0||year@0==0) {//判断闰年条件                day=day 1;            }else {                day=day;            }        }                int _dayCount=0;//对应月份之前总天数        int dayCount=0;//总和天数                int[]monthNum={31,28,31,30,31,30,31,31,30,31,30,31};//每个月对应的时间天数        for (int i = 0; i < month-1; i  ) {            _dayCount=_dayCount monthNum[i];//统计月份天数和        }        dayCount=day _dayCount;        System.out.println("总天数为:" dayCount);            }}
return ((1 2*month 3*(month 1)/5 year year/4 year/400-year/100)%7 1;

注意

  1. 闰年的6月是2玖天,即使年份是闰年,并且闰年的月份在2月从此,则供给多加壹天。
  2. 一,三,伍,7,八,拾,11月是3一天,3月是2八天,别的的是30天【简单记法:四,陆,玖是30天,5月剖断是不是是闰年,假诺不是则2八天,是则加1天,别的31天】。

咱俩得以把各样月份的小运存入数组里面,然后依照输入的月度去遍历数组,只是数组索引从0早先,比输入的月份少1,遍历时候需注意,遍历同时大家得以做三个抬高

本条基本思路是每月去掉28,因为2八能整除7,年份去掉36四,因为364能整除7,但并没有原则推断,唯有壹行,就隐隐感到极其。
闰年的1,八月和一月和常年的是例外的,闰年7月后要对照平年的统华为1,固然你直接用year总计,而不是year-1,当年是闰年得以直接加壹,但你的加1是加到整个八月的景况上了,闰年的一、四月是不可能加的。
后来表明得:闰年的1、二月不对。
但这种简洁的笔触是本人急需学习的。他的月度计算一 二month 3(month 壹)/5给了本人启发。作者试着结构a 2month c(month d)/五来拟合1到二月的(减去2八后)剩余天数的事态,思路是用4层for循环嵌套来蛮力拟合。

全部代码

 1 #!/usr/bin/python
 2 # -*- coding: utf-8 -*-
 3 
 4 """
 5 题目:输入某年某月某日,判断这一天是这一年的第几天?
 6 程序分析:以3月5日为例,应该先把前两个月的加起来,
 7 然后再加上5天即本年的第几天,
 8 特殊情况,闰年的2月是29天,如果年份是闰年,并且闰年的
 9 月份在3月以后,则需要多加1天。
10 每四年一次闰年。
11 1,3,5,7,8,10,12月是31天,2月是28天,其他的是30天。
12 """
13 year = int(input('请输入年份:'))
14 month = int(input('请输入月份:'))
15 day = int(input('请输入今日号数:'))
16 
17 months = [0,31,59,90,120,151,181,212,243,273,304,334]
18 
19 if (month >= 1) and (month <= 12):
20     sum = months[month-1]
21 
22 sum  = day
23 
24 add = 0
25 
26 if (year % 400 == 0) or (year % 4 == 0) and (year % 100 != 0):
27     add = 1
28 if (add == 1) and (month >= 2):
29     sum  = add
30 
31 print('该日期是一年中第%d' % sum)

www.2527.com 1

 

 

 

www.2527.com,协助注意有闰年之分,在遍历从前先判别是或不是是闰年,然后壹旦闰年事关到八月从此的月份,天数都要 1,而一月事先不改变。

#include<stdio.h>
int month,sum;
int judge(int a,int b,int q,int w,int e);

void main()
{
   int a,b=2,c,d,i,count,num[12]={2,5,5,8,10,13,15,18,21,23,26,28};
for(a=-10;a<=9;a  )
     {
       for(c=1;c<=9;c  )
              {
                  for(d=1;d<=9;d  )
                    {
                         for(month=1;month<=12;month  )
{ 

      for(i=0;i<=12;i  )
      {
          count =judge(i,num[i-1],a,c,d);
        }
          if(count==12)
           printf("%dn%dn%dn%dn",a,b,c,d);

}
                     }
int judge(int a ,int b,int q,int w,int e)
{
    month=a;
sum=q 2*a w*(a e)/5;
if(sum==b)
return 1;
else
return 0;
}

完全思路是先输入3.伍先把4月份从前的每一个月天数和求出,这里自个儿是放在数组里面遍历求和,也得以提前把月份相应天数和求出来,加上对应的小运就能够。

未曾四个结出,主张失利。

三 时需牵挂多加一天

TAG标签:
版权声明:本文由澳门新葡8455手机版发布于www.2527.com,转载请注明出处:蛮力拟合,求年积日