首页 > 试题广场 >

计算一年中的第几天

[编程题]计算一年中的第几天
  • 热度指数:232 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解

今年的第几天?

输入年、月、日,计算该天是本年的第几天。


输入描述:
包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。


输出描述:
输入可能有多组测试数据,对于每一组测试数据,
输出一个整数,代表Input中的年、月、日对应本年的第几天。
示例1

输入

1990 9 20
2000 5 1

输出

263
122
importjava.util.Scanner;
 
publicclassMain{
    publicstaticvoidmain(String[] args){
        Scanner sc=newScanner(System.in);
        //while(sc.hasNext()){
            intY=sc.nextInt();
            intM=sc.nextInt();
            intD=sc.nextInt();
            intmon1[]={31,29,31,30,31,30,31,31,30,31,30,31};
            intmon2[]={31,28,31,30,31,30,31,31,30,31,30,31};
            intsum=0;
            if(Y%4==0){
                for(inti=0;i<M-1;i++){
                    sum+=mon1[i];
                }
                sum=sum+D-1;
            }else{
                for(inti=0;i<M-1;i++){
                    sum+=mon2[i];
                }
                sum=sum+D-1;
            }
        //}
        System.out.println(sum);
    }
}
这个应该还是很简单的吧
发表于 2018-09-09 20:42:10 回复(1)
#include <stdio.h>

int main() {
    int year = 0, month = 0, day = 0;
    scanf("%d %d %d ", &year, &month, &day);
    int d = 0;

    int m[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int i = 1;
    if(year%400 == 0 || year%4 == 0 && year%100 == 0) {
        while(i < month) {
            d += m[i];
            i++;
        }
        d += day+1;
    } else {
        while(i < month) {
            d += m[i];
            i++;
        }
        d += day;
    }
    printf("%d\n", d);
    return 0;
}
发表于 2024-02-17 19:36:58 回复(0)
importjava.util.Scanner;
 
/**
 * Created by hzdmm123 on 2018/4/8.
 * 今年的第几天?
 
 输入年、月、日,计算该天是本年的第几天。
 
 
 输入描述:
 包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。
 
 
 输出描述:
 输入可能有多组测试数据,对于每一组测试数据,
 输出一个整数,代表Input中的年、月、日对应本年的第几天。
 
 输入例子1:
 1990 9 20
 2000 5 1
 
 输出例子1:
 263
 122
 */
publicclassMain {
    publicstaticvoidmain(String[] args) {
        Scanner in = newScanner(System.in);
        intyead = in.nextInt();
        intmonth = in.nextInt();
        intday = in.nextInt();
 
        int[] days = {31,28,31,30,31,30,31,31,30,31,30,31};
        intnums= 0;
        for(inti=0;i<month-1;i++){
            nums +=days[i];
        }
 
        if(month>2){
            if(isLeapYear(yead)){
                nums+=1;
            }
        }
        System.out.println(nums+day);
 
    }
 
    publicstaticbooleanisLeapYear(intyear){
        if(year%4==0&&year%100!=0){
            returntrue;
        }elseif(year % 400==0){
            returntrue;
        }
        returnfalse;
    }
}
发表于 2018-04-08 13:43:42 回复(0)
#include <iostream>
usingnamespace std;
intmain()
{
    int year;
    int month;
    int day;
    int days[13] = {0};
    days[1] = 0;
    days[2] = 31;
    days[3] = days[2]+28;
    days[4] = days[3]+31;
    days[5] = days[4]+30;
    days[6] = days[5]+31;
    days[7] = days[6]+30;
    days[8] = days[7]+31;
    days[9] = days[8]+31;
    days[10] = days[9]+30;
    days[11] = days[10]+31;
    days[12] = days[11]+30;
    //while(1){
        cin >> year;
        cin >> month;
        cin >> day;
        intcount = 0;
        //闰年
        if((year % 100 == 0 && year % 400 == 0) || (year % 100 != 0 && year % 4 == 0)){
            if(month > 2){
                count += (days[month] + 1 + day);
            }
            else
                count += days[month] + day;
        }
        else{//平年
            count += days[month] + day;
        }
        cout << count << endl;
    //}
    return0;
}
发表于 2018-04-03 17:53:52 回复(0)
importjava.util.ArrayList;
importjava.util.Scanner;
 
 
publicclassMain {
 
    publicstaticvoidmain(String[] args) {
    Scanner in = newScanner(System.in);
    while(in.hasNext()){
    inty = in.nextInt();
    intm = in.nextInt();
    intd = in.nextInt();
    intres= Dates(y,m,d);
    Dates(y,m,d);
    System.out.println(res);
}
    }
    publicstaticintDates(inty, intmon, intd) {
      int[] month = newint[13];
      for(intm=1;m<13;m++){
      if(m%2==1&&m<9||m==8||m==10||m==12){
          month[m]=31;
      }
      if(m==4||m==6||m==9||m==11){
          month[m]=30;
      }
      if((y%4==0&&y%100!=0) ||y%400==0){
          month[2]=29;
      }else{
        month[2]=28;
    }
      }
    for(inti=1;i<mon;i++) {
        month[0]+=month[i];
    }
        returnmonth[0]+d;
    }
}
发表于 2018-03-22 17:14:08 回复(0)
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
intf[13]={31,28,31,30,31,30,31,31,30,31,30,31};
int judge(intyear){
    if(year%4==0&&year%100!=0||year%400==0)
        return1;
    return0;
}
intmain(){
    intyear,mouth,day;
    scanf("%d %d %d",&year,&mouth,&day);
    intcount=0;
    intflag=0;
    flag=judge(year);
    if(mouth>=3)
        count+=flag;
        for(inti=0;i<mouth-1;i++)
            count+=f[i];
        count+=day;
    printf("%d\n",count);
 
}
发表于 2018-03-19 16:03:06 回复(0)

importjava.util.*;
publicclassMain{
publicstaticvoidmain(String[] args){
int[] dateArr =newint[3];
Scanner scan =newScanner(System.in);
while(scan.hasNext()){
String date = scan.nextLine();
String[] dates = date.split(" ");
for(inti=0; i < dates.length;i++){
dateArr[i] = Integer.parseInt(dates[i]);
}
System.out.println(calculate(dateArr));
}
}
privatestaticintcalculate(int[] arr){
intyear = arr[0],month = arr[1],day = arr[2];
intsum =0;
int[] months1 = {31,28,31,30,31,30,31,31,30,31,30,31};//
int[] months2 = {31,29,31,30,31,30,31,31,30,31,30,31};//runnian
if(year %4==0){
for(inti =0;i < month-1; i++){
sum += months2[i];
}
}else{
for(inti =0;i < month-1; i++){
sum += months1[i];
}
}
sum += day;
returnsum;
}
}

发表于 2018-03-10 14:51:20 回复(0)