C++ 实现判断一个输入日期是星期几,是一年中的第几天

/*

通过输入年月日,计算出这一天是星期几,计算这一天是这一年的多少天,判断这一年是否为闰年

*/

#include<iostream>

using namespace std;

struct time

{

int year;

int month;

int day;

unsigned int weekday;

};

void initialtime(time & t);//输入初始化时间

void Show(time & t);//显示时间信息

int Weekdaycount(time & t);//计算当日是星期几

int Daycount(time & t);//计算当日是第公元多少天

int Daysyearcount(time & t);//计算当日是该年的第多少天

bool isleapyear(time & t);//判断该年是不是闰年

bool check(time &t);//检查时间格式是否正确

int main()

{

time t;

initialtime(t);

Show(t);

return 0;

}

bool check(time &t)

{

if (t.year <= 0 || (t.month <= 0 || t.month>12) || t.day <= 0) return false;

else{

if ((t.month == 1 || t.month == 3 || t.month == 5 || t.month == 7

|| t.month == 8 || t.month == 10 || t.month == 12) && t.day > 31)return false;

else

{

if ((t.month == 4 || t.month == 6 || t.month == 9 || t.month == 11

) && t.day > 30)return false;

else

{

if (t.month == 2) {

if (isleapyear(t)) {

if (t.day > 29)return false; else return true;

}

else

{

if (t.day > 28)return false; else return true;

}

}

}

}

}

}

void initialtime(time & t)

{

cout << "Enter the time (year,month,day):\n";

cin >> t.year;

cin.get();

cin>> t.month;

cin.get();

cin >> t.day;

cin.get();

if (!check(t)){ cout << "Try again:\n"; initialtime(t); }

else

t.weekday = Weekdaycount(t);

}

void Show(time & t)

{

cout << "Year: " << t.year << "\t";

cout << "Month: " << t.month << "\t";

cout << "Day: " << t.day << "\t";

cout << "Weekday: " << t.weekday << endl;

cout << "This is a ";

if (isleapyear(t))cout << "leap"; else cout << "nonleap";

cout << " year.\n";

cout << "Today is the " << Daysyearcount(t) << " days of the year.\n";

}

int Weekdaycount(time & t)

{

return Daycount(t) % 7;

}

int Daycount(time & t)

{

int days = 0;

days = (t.year - 1) * 365 + (t.year - 1) / 4 - (t.year - 1) / 100

+ (t.year - 1) / 400 + Daysyearcount(t);

return days;

}

bool isleapyear(time & t)

{

if (t.year % 4 == 0 && t.year % 100 != 0) return true;//年是四的倍数而且不是100的倍数,是闰年

if (t.year % 400 == 0)return true;

else return false;

}

int Daysyearcount(time & t)

{

int days = 0;

int mtemp = t.month - 1;

while (mtemp > 0)

{

switch (mtemp)

{

case(1) :

case(3) :

case(5) :

case(7) :

case(8) :

case(10) :

case(12) :

days += 31; break;

case(4):

case(6):

case(9):

case(11):

days += 30; break;

case(2) :

days += 28; break;

default:

break;

}

--mtemp;

}

if (isleapyear(t))++days;//如果是闰年,再加上一天

return days+t.day;//返回计算的天数加上当月的天数

}

以上是以独立函数实现的代码,下次改进用类的表达修改一下!

时间: 2024-10-24 03:04:36

C++ 实现判断一个输入日期是星期几,是一年中的第几天的相关文章

输入日期显示星期几

输入时间获取对应的日期是星期几 package test1; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public clas

Python3 输入日期显示星期几

import time import traceback def findLen(str): counter = 0 while str[counter:]: counter += 1 return counter def is_valid_date(str_date): '''判断是否是一个有效的日期字符串''' try: time.strptime(str_date, "%Y%m%d") return True except Exception: # traceback.print

oracle根据日期计算星期几

工作中用到的,在存储过程中的语句,简单记下: /** 判断输入日期是星期几 */ select decode(to_char(to_date(iv_date,'yyyy-mm-dd'), 'day'),'星期一','1','星期二','2','星期三','3','星期四','4','星期五','5','星期六','6','7') into vi_weeknum from dual; /** 计算离输入日期最近的星期一的日期 */ select to_char((to_date(iv_date,'

输入一个日期,输出该日期是星期几

假定输入日期合法正确. 先找一个参考日期,找星期天的日期为最好.我一时没想到就选了今天,星期一,也不错.然后求出输入日期与参考日期之间间隔的天数n,n为负时则表示输入日期在参考日期之前,n为正时则表示输入日期在参考日期之后.因为星期为循环星期1到星期天,又根据补码的原理,可知n = ((n % 7) +  8) % 7, 此时的n为几则是星期几.(PS:星期天用0来表示,因为我选的是参考日期是星期一所以是+8,如果选的是星期天则是+7). 1 //给定一个日期,求这个日期是星期几? 2 #inc

inputs a date (e.g. July 4, 2008) and outputs the day of the week-根据输入日期判断星期几

inputs a date (e.g. July 4, 2008) and outputs the day of the week-根据输入日期判断星期几: //inputs a date (e.g. July 4, 2008) and outputs the day of the week #include<iostream> #include<string> using namespace std; bool leapyear; void getInput(string&

一个日期是星期几

#include <stdio.h> #include <stdlib.h> /* 输入一个日期,输出该日期是星期几. */ int monthDays[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int getWeekDay(int year, int month, int day); int isGoodYear(int year); int isGoodMonth(int month); int isGo

Python中判断是否为闰年,求输入日期是该年第几天

#coding = utf-8 def getLastDay(): y = int(input("Please input year :")) m = int(input("please input month :")) d = int(input("Please input day :")) s=0 if y <1: y=1 if m <1: m=1 if m>12: m=12 if d <1: d=1 mothday=

输入一个日期,求是这一年中的第几天

有两种方法进行实现 方法一: int year,month,date;  int day;  int sum=0;  boolean flag=false;  do{  Scanner scan=new Scanner(System.in);  System.out.println("请输入年份");  year=scan.nextInt();  System.out.println("请输入月份");  month=scan.nextInt();  System.

利用Apache的beanutils判断字符串是否为一个合法日期

依赖的jar包 commons-beanutils-1.8.0.jar commons-logging-1.0.4.jar 方法如下 package test.date; import java.util.Date; import java.util.Locale; import org.apache.commons.beanutils.locale.converters.DateLocaleConverter; /**  * 利用Apache的beanutils判断字符串是否为一个合法日期