今年的第几天?
输入年、月、日,计算该天是本年的第几天。
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
需要注意的是:
可以写成一行:
import datetime
while True:
try:
print(datetime.datetime(*map(int, input().split())).strftime("%j").lstrip("0"))
except:
break
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;
}
}
#include <iostream> #include <vector> 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<int> 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; }
傻瓜解法 #include <iostream> 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<month-1;i++) { num += d1[i]; } num=num+day; cout<<num<<endl; } else { for(int i=0;i<month-1;i++) { num += d2[i]; } num=num+day; cout<<num<<endl; } } return 0; } ps: 请教一下,请看到的大神解答一下,为什么下面这个不行#include <iostream> 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<month-1;i++) { num += d1[i]; } num=num+day; } else { for(int i=0;i<month-1;i++) { num += d2[i]; } num=num+day; } cout<<num<<endl; } return 0; }
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<month; i++) { ans += M_DAYS[i]; } ans += day; System.out.println(ans); M_DAYS[2] = 28; } return; } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 每个月的天数,平年 int[] daysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 循环处理多组测试数据 while (scanner.hasNext()) { int year = scanner.nextInt(); int month = scanner.nextInt(); int day = scanner.nextInt(); // 判断是否为闰年 boolean isLeapYear = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); // 计算总天数 int totalDays = 0; // 累加前面月份的天数 for (int i = 0; i < month - 1; i++) { totalDays += daysInMonth[i]; } // 加上当月的天数 totalDays += day; // 如果是闰年且月份大于2月,加1天 if (isLeapYear && month > 2) { totalDays++; } System.out.println(totalDays); } scanner.close(); } }
#include <iostream> #include <vector> using namespace std; int main() { int year, month, day; cin >> year >> month >> day; vector<int> monthday = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; bool isrunnian = false; if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){ isrunnian = true; } int sum = 0; for(int i = 0; i < month - 1; ++i){ sum += monthday[i]; } sum += day; if(isrunnian && month > 2){ sum++; } cout << sum; } // 64 位输出请用 printf("%lld")
#include <iostream> #include <map> #include <vector> using namespace std; // 闰年:366 2月 29天 // 平年:365 2月 28天 // 基本规则:如果年份能被 4 整除,则可能是闰年。 // 例外: // 如果年份能被 100 整除但不能被 400 整除,则是平年。 // 如果年份能被 400 整除,则是闰年。 // 数学表达: // 闰年条件:(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)。 // 否则为平年。 int of_day(int y,int m,int d){ vector<int> v(13); if((y%4==0 && y%100!=0) || y%400==0) v={0,31,29,31,30,31,30,31,31,30,31,30,31}; else v={0,31,28,31,30,31,30,31,31,30,31,30,31}; int ans=0; for (int i=1; i<m;i++) { ans+=v[i]; } ans+=d; return ans; } int main() { int y,m,d; while (cin>>y>>m>>d) { cout<<of_day(y,m,d)<<endl; } } // 64 位输出请用 printf("%lld")
import sys month_day = [31,59,90,120,151,181,212,243,273,304,334,365] for line in sys.stdin: y,m,d = map(int,line.split()) # 平年天数 days = month_day[m-2] + d # 闰年天数,如大于2月则在平年天数上加1天 if y % 4 == 0 and y % 100 != 0&nbs***bsp;y % 400 == 0: if m > 2: days += 1 print(days)
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 HashMap<Integer, Integer> pingYear = new HashMap<>(); pingYear.put(1, 31); pingYear.put(2, 28); pingYear.put(3, 31); pingYear.put(4, 30); pingYear.put(5, 31); pingYear.put(6, 30); pingYear.put(7, 31); pingYear.put(8, 31); pingYear.put(9, 30); pingYear.put(10, 31); pingYear.put(11, 30); while (in.hasNextInt()) { // 注意 while 处理多个 case int a = in.nextInt(); int b = in.nextInt(); int c = in.nextInt(); int day = 0; for (Map.Entry<Integer, Integer> map : pingYear.entrySet()) { int key = map.getKey(); int value = map.getValue(); if ( key > b - 1) { day = day + c; break; } day = day + value; } if (isRunYear(a)) { if (b > 1) { day += 1; } } System.out.println(day); } } public static boolean isRunYear(int year) { return year % 4 == 0 && year % 100 != 0 || year % 400 == 0; } }
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Scanner; public class TestDate { public static void main(String[] argvs) throws ParseException { Scanner sc=new Scanner(System.in); while(sc.hasNext()){ String dateStr=sc.nextLine(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy MM dd"); Date date= null; date=sdf.parse(dateStr); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int index=calendar.get(Calendar.DAY_OF_YEAR); System.out.println(index); } } }