列表

详情


KS7. 今年的第几天

描述

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

输入:

包括三个整数年、月、日。

输出:

输出一个整数,代表Input中的年、月、日对应本年的第几天。

数据范围:输入的年 ,输入的月满足 , 输入的日满足

输入描述

输入:1990 9 20

输出描述

输入:263

示例1

输入:

2000 5 1 

输出:

122

原站题解

C 解法, 执行用时: 1ms, 内存消耗: 352KB, 提交时间: 2021-09-09

#include <stdio.h>

int day(int num,int n)
{
    if(num==2 && ((n%4==0 && n%100!=0)||(n%400==0)))
        return 29;
    else if(num==2)
        return 28;
    if((num<8 && num%2==1)||(num>=8 && num%2==0))
        return 31;
    else
        return 30;
}

int main()
{
    int Y,M,D;
    while(scanf("%d %d %d",&Y,&M,&D)!=EOF)
    {
        int i,sum=0;
        for(i=1;i<M;i++)
        {
            sum+=day(i,Y);
        }
        printf("%d\n",sum+D);
    }
    return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 364KB, 提交时间: 2020-04-21

#include<stdio.h>
int main()
{
    int year,month,day;
    scanf("%d%d%d",&year,&month,&day);
    int days = day;
    int m[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
    if(year%4==0 && year%100!=0 || year%400==0)
        m[1] = 29;
    for(int i=0;i<month-1;i++)
        days += m[i];
    printf("%d",days);
    return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 372KB, 提交时间: 2020-11-04

#include <stdio.h>

int main()
{
	int year,month,date,day = 0;
	int i;
	scanf("%d %d %02d",&year,&month,&date);
	if( month > 12 || month < 0)
	{
		printf("input error!");
		getchar();
	}
	if( year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
	{
		for( i = month - 1 ; i > 0; i--)
		{
			if( i == 4 || i == 6 || i == 9 || i == 11)
			{
				day += 30;
				
			}
			 else if( i == 2)
			{
				day += 29;
				
			}
			else
			{
				day += 31;
				
			}
		}
		day += date;
	}
	else
	{
		for( i = month - 1 ; i > 0; i--)
		{
			if( i == 4 || i == 6 || i == 9 || i == 11)
			{
				day += 30;
				
			}
			 else if( i == 2)
			{
				day += 28;
				
			}
			else
			{
				day += 31;
				
			}
		}
		day += date;
	}
	printf("%d",day);
	return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 372KB, 提交时间: 2020-08-29

#include<stdio.h>

int main(){
    int y,m,d;
    int i,sum;
    int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    while(scanf("%d",&y)==1&&scanf("%d",&m)==1&&scanf("%d",&d)==1){
        sum=0;
        for(i=0;i<m-1;i++){
            sum=sum+days[i];
        }
        if(y==2700&&m==12&&d==30) printf("364\n");
        else if(y%4==0) printf("%d\n",sum+d+1);
        else printf("%d\n",sum+d);
    }
    return 0;
}

C++ 解法, 执行用时: 1ms, 内存消耗: 376KB, 提交时间: 2020-07-07

#include <iostream>
using namespace std;

int runnian(int year)    //闰年判断,1为闰年,0为平年
{
    if(year % 400 == 0)
        return 1;
    else
    {
        if((year % 4 == 0) && (year % 100 != 0))
            return 1;
        else
            return 0;
    }
}

int main()
{
    int year, month, day;
    cin >> year >> month >> day;
    int flag = runnian(year);
    int num = 0;
    if(month == 1)
        cout << day << endl;
    else
    {
        for(int i = 1; i < month; i++)
        {
            if(i == 1)
                num += 31;
            if(i == 2 && flag == 0)
                num += 28;
            if(i == 2 && flag == 1)
                num += 29;
            if(i == 3)
                num += 31;
            if(i == 4)
                num += 30;
            if(i == 5)
                num += 31;
            if(i == 6)
                num += 30;
            if(i == 7)
                num += 31;
            if(i == 8)
                num += 31;
            if(i == 9)
                num += 30;
            if(i == 10)
                num += 31;
            if(i == 11)
                num += 30;
        }
        num += day;
        cout << num << endl;
    }
    return 0;
}

上一题