编程题
定义一个结构体变量(包括年、月、日),计算该日在本年中为第几天?(注意考虑闰年问题),要求写一个函数days,实现上面的计算。由主函数将年月日传递给days函数,计算后将日子传递回主函数输出。
public class Test1 { public static void Day(int year, int month, int day) { int runMonth[] = {31,29,31,30,31,30,31,31,30,31,30,31}; int pinMonth[] = {31,28,31,30,31,30,31,31,30,31,30,31}; int currentDay = 0; if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { for (int i = 0; i < month - 1; i++) { currentDay += runMonth[i]; } currentDay += day; } else { for (int i = 0; i < month - 1; i++) { currentDay += pinMonth[i]; } currentDay += day; } System.out.println("今天是" + year + "年的第" + currentDay + "天"); } public static void main(String[] args) { Day(2000,3,1); } }
class Date { private int year; private int month; private int day; public Date(int year, int month, int day) { this.year = year; this.month = month; this.day = day; } public int getYear() { return year; } public void setYear(int year) { this.year = year; } public int getMonth() { return month; } public void setMonth(int month) { this.month = month; } public int getDay() { return day; } public void setDay(int day) { this.day = day; } } public class Test { public static int days(Date date){ int [] arr = {31,28,31,30,31,30,31,31,30,31,30,31}; int sum = 0; if (date != null) { int year = date.getYear(); int month = date.getMonth(); int day = date.getDay(); if(((year %4 ==0 ) && (year %100 !=0)) || (year %400 ==0)){ arr[1] = 29; } for (int i = 1;i < month ;i++){ sum += arr[i-1]; } sum += day; } return sum; } public static void main(String[] args) { Date date = new Date(2020,3,1); System.out.println(days(date)); } }
public Class Test{ public static int days(int y, int m,int d){ int[] bm = new int[]{1,3,5,7,8,10,12};//大月份 int[] sm = new int[]{4,6,9,11};//小月份 int feb = 28; if(y % 4 == 0 && y % 100 != 0 || y % 400 == 0){ feb = 29; } Map<Integer,Integer> mothDays = new HashMap<>();//日期的月份-天数 for(int c:bm){ mothDays.put(c,31); } for(int c:sm){ mothDays.put(c,30); } mothDays.put(2,feb); int sum = 0; for(int i = 1; i < m; i++){ sum += mothDays.get(i); } sum += d; return sum; } public static int days(String time){ Date date = new Date(time);//使用Date判断格式是否符合要求 int y = 0; int m = 0; int d = 0; if (time.contains("/")){ String[] split = time.split("/"); y = Integer.parseInt(split[0]); m = Integer.parseInt(split[1]); d = Integer.parseInt(split[2]); } return days(y,m,d); } public static void main(String[] args){ System.out.println(days("2020/12/31")); System.out.println(days(2020,12,31)); } }
import java.util.* public class Main{ public int days(Date date){ int year = date.getYear() + 1900; long time = date.getTime(); long startTime = new SimpleDateFormat("yyyyMMdd").parse(year + "0101").getTime(); return (int) (time - startTime)/(1000*60*60*24); } }
#include<iostream>
using namespace std;
struct ymd
{
int day;
int month;
int year;
};
int dayof[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
int days(struct ymd *p)
{
int i, d;
if (p->year % 4 == 0 && p->year % 100 != 0 || p->year % 400 == 0)
dayof[2] = 29;
d = p->day;//这个月的天数
for (i = 1; i<p->month; i++)
d = d + dayof[i];//加上前面每个月的天数
return d;
}
void main()
{
struct ymd date;
int d;
while(1)
{
cout << "-----------------------------------" << endl;
cout<<"date(yyyy/mm/dd)=? (yyyy=0--Exit)"<<endl;
cin>>date.year>>date.month>>date.day;
if (date.year == 0)//当输入年份==0时退出
break;
d = days(&date);
cout << "The day of the year is " << d << endl;
}
}