4
Python3 import datetime
while True:
try:
y, m, d = map(int, input().split())
date = datetime.datetime(y, m, d)
print(date.strftime("%j").lstrip("0"))
except:
break
需要注意的是: datetime的参数全为整数。
在输出是第几天时,前面可能带有0,所以要把前面的0去掉。
可以写成一行: import datetime
while True:
try:
print(datetime.datetime(*map(int, input().split())).strftime("%j").lstrip("0"))
except:
break
发表于 2019-02-23 09:32:39
回复(0)
4
import java.util.Scanner;
/**
* 计算一年中的第几天
* 今年的第几天?
* 输入年、月、日,计算该天是本年的第几天。
* 输入描述:
* 包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。
* 输出描述:
* 输入可能有多组测试数据,对于每一组测试数据,
* 输出一个整数,代表Input中的年、月、日对应本年的第几天。
* 输入例子1:
* 1990 9 20
* 2000 5 1
* 输出例子1:
* 263
* 122
*
* @author shijiacheng
* @date 2018/2/21
*/
public class DayOfYeafSolution {
public static void main(String[] args){
int[] days = {31,28,31,30,31,30,31,31,30,31,30,31};
Scanner sc = new Scanner(System.in);
while (sc.hasNextInt()){
int Y = sc.nextInt();
int M = sc.nextInt();
int D = sc.nextInt();
if (isLeapYear(Y)){
days[1] = days[1]+1;
}
int day = 0;
for (int i = 1; i < M; i++) {
day+=days[i-1];
}
day +=D;
System.out.println(day);
}
}
/**
* 判断是否是闰年
* @param year
* @return
*/
public static boolean isLeapYear(int year){
if (year%4==0&&year%100!=0){
return true;
}else if (year%400==0){
return true;
}
return false;
}
}
发表于 2018-02-21 15:09:49
回复(0)
2
先判断闰年后,然后用vector动态创建数组,直接相加就好。
#include
#include
using namespace std;
int main(void)
{
int year, month, day;
while (cin >> year >> month >> day)
{
int count = 0;
int Feb = 28;
if (year % 4 == 0 || year % 400 == 0)
{
Feb = 29;
}
vector monthcount = { 0,31,Feb,31,30,31,30,31,31,30,31,30,31 };
for (int i = 0; i < month; i++)
{
count += monthcount[i];
}
count += day;
cout << count << endl;
}
return 0;
}
发表于 2019-04-29 12:02:47
回复(0)
1
链接:https://www.nowcoder.com/questionTerminal/178aa3dafb144bb8b0445edb5e9b812a
来源:牛客网
知识点:
1.瑞年的判断:若year%400==0 or (year%100!=0)&&(year%4==0),则该年为瑞年,否则为平年。
C++代码实现:
#include
using namespace std;
int days(int year,int month,int day);
int main()
{
int year,month,day;
while(cin>>year>>month>>day)
{
cout<
}
return 0;
}
int days(int year,int month,int day)
{
int month_day[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if((year%400==0)||((year%4==0)&&(year%100!=0))){
month_day[1]=29;
}
int sumday=day;
for(int i=0;i
{
sumday+=month_day[i];
}
return sumday;
}
发表于 2019-09-09 09:51:19
回复(0)
1
傻瓜解法
#include
using namespace std;
int main()
{
int d1[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int d2[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int year,month,day;
while(cin>>year>>month>>day)
{
int num=0;
if((year % 4 == 0 && year % 100 != 0)||(year%400 ==0))
{
for(int i=0;i
{
num += d1[i];
}
num=num+day;
cout<
}
else
{
for(int i=0;i
{
num += d2[i];
}
num=num+day;
cout<
}
}
return 0;
}
ps:
请教一下,请看到的大神解答一下,为什么下面这个不行
#include
using namespace std;
int main()
{
int d1[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int d2[12]={31,28,31,30,31,30,31,31,30,31,30,31};
while(cin)
{
int year,month,day;
int num=0;
cin>>year>>month>>day;
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
for(int i=0;i
{
num += d1[i];
}
num=num+day;
}
else
{
for(int i=0;i
{
num += d2[i];
}
num=num+day;
}
cout<
}
return 0;
}
编辑于 2019-05-17 21:32:08
回复(0)
1
#include
using namespace std;
int main()
{ int Y,M,D,d; int m[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; while(cin>>Y>>M>>D){ d = D; for(int i=0;i
}
发表于 2019-02-17 02:41:09
回复(0)
1
import java.util.*;
public class Main {
private static final int[] M_DAYS = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int year = sc.nextInt();
int month = sc.nextInt();
int day = sc.nextInt();
if ( (year % 400 == 0) || (year % 4 == 0 && year % 100 !=0) ) {
M_DAYS[2] = 29;
}
int ans = 0;
for (int i=1; i
ans += M_DAYS[i];
}
ans += day;
System.out.println(ans);
M_DAYS[2] = 28;
}
return;
}
}
发表于 2019-01-24 17:05:54
回复(0)
1
import java.util.Scanner;
public class test2 {
public static void main(String[] args){
int D=0;
int [] date={31,28,31,30,31,30,31,31,30,31,30,31};
Scanner sc=new Scanner(System.in);
System.out.println("请输入年月日:");
while(sc.hasNextInt()){
int year=sc.nextInt();
int month=sc.nextInt();
int day=sc.nextInt();
if(year%400==0||year%100==0){
date[1]=29;}
for(int i=0;i
D+=date[i];}
System.out.print("该天是本年的第"+(D+day)+"天");
}
}
发表于 2018-03-12 16:54:59
回复(0)
0
importjava.text.ParseException; importjava.text.SimpleDateFormat; importjava.util.Calendar; importjava.util.Date; importjava.util.Scanner; public classTestDate { public static voidmain(String[] argvs) throwsParseException {
Scanner sc=newScanner(System.in); while(sc.hasNext()){
String dateStr=sc.nextLine();
SimpleDateFormat sdf=newSimpleDateFormat("yyyy MM dd");
Date date= null;
date=sdf.parse(dateStr);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date); intindex=calendar.get(Calendar.DAY_OF_YEAR);
System.out.println(index);
}
}
}
发表于 2020-03-12 09:38:37
回复(0)
0
使用Date API Calendar SimpleDateFormat 代码量少,好做
发表于 2019-07-28 22:21:56
回复(0)
0
#include
#include
int main()
{ int year,month,day;
int sum=0;
int flag = 0;
int days = 0;
scanf("%d %d %d",&year,&month,&day);
if(year%4==0)
{
flag=1;
if(year%100==0&&year%400==0)
{flag=1;}else {flag = 0;}
}
for(int i=1;i
{
if((1==i)||(3==i)||(5==i)||(7==i)||(8==i)||(10==i)||(12==i))
{
days = 31;
sum = sum +days;
continue;
}else if((4==i)||(6==i)||(9==i)||(11==i))
{
days = 30;
sum = sum +days;
continue;
}else
{
switch (flag)
{
case 0:
sum=sum+28; break;
case 1:
sum=sum+29; break;
default:
break;
}
}
sum = sum +day;
}
printf("%d\n",sum);
return 0;
}
初来乍到,新手小白一般写法,请多指教
发表于 2019-06-27 09:23:03
回复(0)
0
import java.util.Scanner;
publicclassYmd {
Scanner i=new Scanner(System.in);
int Y=i.nextInt();
int M=i.nextInt();
int D=i.nextInt();
int k;
public void jisuan() {
int s;
if((Y/400)%2==0||(Y/400)%2==1) {
s=29;
}
else {
s=28;
}
k=s+D+(M-2)*30+(M-1)/2;
System.out.println(k);
}
public static void main(String[]args) {
Ymd test=new Ymd();
test.jisuan();
}
}
发表于 2019-05-27 19:54:18
回复(0)
0
#include
using namespace std;
int num_run[12] = {31,29,31,30,31,30,31,31,30,31,30,31};
int num_norun[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
int year,month,day;
while(cin >> year >>month >> day)
{
int daynum = 0;
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
for(int i = 0; i < month - 1; ++i)
daynum += num_run[i];
daynum += day;
}
else{
for(int i = 0; i < month - 1; ++i)
daynum += num_norun[i];
daynum += day;
}
cout << daynum << endl;
}
}
发表于 2019-05-16 11:03:51
回复(0)
0
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int[] arrs=new int[3];
for(int i=0;i<3;i++){
arrs[i]=sc.nextInt();
}
System.out.println(findDay(arrs));
}
}
private static int findDay(int[] arrs) {
int sum=0;
int n=arrs[1]-1;
while(n>0){
if(n==1||n==3||n==5||n==7||n==8||n==10||n==12){
sum+=31;
}else if(n==2){
sum+=isRun(arrs[0])?29:28;
}else{
sum+=30;
}
n--;
}
sum+=arrs[2];
return sum;
}
private static boolean isRun(int i) {
if(i%400==0){
return true;
}
if(i%4==0&&i%100!=0){
return true;
}
return false;
}
}
发表于 2019-05-02 20:45:00
回复(0)
0
#include
int main(void)
{
int year = 0, month = 0, day = 0, sum = 0;
int month_num[] = {31,28,31,30,31,30,31,31,30,31,30,31};
int i = 0;
while(scanf("%d%d%d",&year, &month, &day) != EOF)
{
for(i=0; i
{
sum += month_num[i];
}
sum += day;
if(month>=3)
{
if(((year%4==0)&&(year%100!=0)) || (year%400==0))
{
sum++;
}
}
printf("%d\n",sum);
}
}
发表于 2019-05-02 18:42:19
回复(0)
0
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int main()
{
int year,month,day;
while(cin>>year>>month>>day){
map Month;
Month[1]=31;
Month[2]=(year%4==0)?29:28;
Month[3]=31;
Month[4]=30;
Month[5]=31;
Month[6]=30;
Month[7]=31;
Month[8]=31;
Month[9]=30;
Month[10]=31;
Month[11]=30;
Month[12]=31;
if(1==month){
cout<
}else{
int cnt=0;
for(int i=1;i
cnt+=Month[i];
}
cout<
}
}
return 0;
}
发表于 2019-04-27 09:29:48
回复(0)
0
最笨的方法了,楼市几位大佬先创建了需要的数据,然后直接查找使用,我这个写的每次都要执行indexOf,很耗时
发表于 2019-04-25 16:04:48
回复(0)
0
#include
using namespace std;
int main()
{
int base[2][12]={{ 0, 31, 60, 91,121,152,182,213,244,274,305,335},
{ 0, 31, 59, 90,120,151,181,212,243,273,304,334}};
int Y, M, D;
int flag;
while(cin >> Y >> M >> D)
{
if(((Y%4 == 0)&&(Y%100 != 0))||(Y%400== 0))//闰年
flag = 0;
else
flag = 1;
cout << base[flag][M-1] + D;
}
return 0;
}
发表于 2019-04-09 21:56:24
回复(0)
0
import java.util.*;
public class Main8{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int Y = input.nextInt();
int M = input.nextInt();
int D = input.nextInt();
int[] Yes = {31,29,31,30,31,30,31,31,30,31,30,31};
int[] No = {31,28,31,30,31,30,31,31,30,31,30,31};
int total = 0;
if((Y%4==0&&Y%100!=0)||Y%400 == 0){
for(int i =0;i
total = total+Yes[i];
}
total +=D;
}
else{
for(int i =0;i
total = total+No[i];
}
total +=D;
}
System.out.println(total);
}
}
发表于 2019-03-27 20:03:37
回复(0)
0
//调用jdk1.8新特性
import java.time.LocalDateTime;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
while (cin.hasNextInt()) {
int year = cin.nextInt();
int month = cin.nextInt();
int day = cin.nextInt();
LocalDateTime time = LocalDateTime.of(year,month,day,0,0);
System.out.println(time.getDayOfYear());
}
}
}
发表于 2019-03-24 23:23:10
回复(0)