作为一个萌新 ,这个函数没有运用数组,在编写的时候还是挺有趣的,唯一的遗憾是 在判断 输入日期的正误时 判断语句过于繁琐 ,希望有大佬 指点指点小弟。
#include <iostream>
using namespace std;
int pd(int Y);//判断是否为闰年 的函数
void th (int Y, int M, int D);
int main()
{
int Y, M, D;
cout << "请输入日期,格式: 年,月,日。如:2021 11 13" << endl;
cin >> Y >> M >> D;
while (Y==0||M < 1 || M>12 || D > 31 || D < 1 || (M == 2 && D > 29) || ((!pd(Y)) && M == 2 && D > 28) || (M == 4 || M == 6 || M == 9 || M == 11) && D>30)
{
cout << "你输入的日期有误,请重新输入" << endl;//排除一切 日期错误的情况 若年份是负数 则代表公元前
cin >> Y >> M >> D;
}
th(Y, M, D);
return 0;
}
int pd(int Y)
{
if ((Y % 4 == 0 && Y % 100 != 0) || Y % 400 == 0)
{ return 1;}
else
{ return 0;}
}
void th (int Y, int M, int D)
{
int TH = 0;
switch (M) //利用switch 语句无“break”就连续执行的特点 在不利用数组的情况下 完成天数的累加。
{
case 12: TH += 30;
case 11: TH += 31;
case 10: TH += 30;
case 9: TH += 31;
case 8: TH += 31;
case 7: TH += 30;
case 6: TH += 31;
case 5: TH += 30;
case 4: TH += 31;
case 3: {
if (pd(Y))//判断闰年
{
TH += 29;
}
else
{
TH += 28;
}
}
case 2: TH += 31;
case 1: TH += D;
}
cout << Y << "年" << M << "月" << D << "日" << "是该年的第" << TH << "天" << endl;
}