这是一道典型的模拟题,就是按照题目说的意思去做就行

要输出一个日期,这个日期必须满足:

  1. 这个日期是合法的(存在这个日期);

  2.  这个日期在规定范围内

因为答案最多只有三个,而且A,B,C

如何排列都已经事先知道了,所以只需要定义一个check(year,month,day)

函数,用来判断传入的年月日是否符合规定,分别把三种排列输入函数内,若合法,则保存下来

#include <iostream> // 包含输入输出流的头文件
using namespace std; // 使用标准命名空间

int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; // 定义保存每个月天数的数组

bool check_valid(int y,int m,int d) // 定义函数,用于检查日期是否合法
{
  if(!m||m>12||!d) // 如果月份为0或大于12,或者日期为0,返回false
    return false;
  if(m!=2&&d>days[m]) // 如果月份不是2且日期大于该月的天数,返回false
    return false;
  if(m==2) // 如果月份为2
  {
    int leap = (y%4== 0&&y%100!=0) || (y % 400 == 0); // 判断是否是闰年
    if(d>28+leap) // 如果日期大于28或29,根据闰年情况返回false
      return false;
  }
  return true; // 其他情况返回true,即日期合法
}

int main() // 主函数
{
  ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); // 输入输出流设置,加速输入输出

  int a,b,c; // 声明整型变量a、b、c
  scanf("%d/%d/%d",&a,&b,&c); // 从输入流中按指定格式读取三个整数保存到a、b、c中

  for(int i=19600101;i<=20591231;i++) // 循环从1960年1月1日到2059年12月31日
  {
    int year=i/10000; // 计算年份
    int month=i%10000/100; // 计算月份
    int day=i%100; // 计算日期
    if(check_valid(year,month,day)) // 调用函数检查日期是否合法
    {
      if(year%100==a&&month==b&&day==c || month==a&&day==b&&year%100==c || day==a&&month==b&&year%100==c) // 检查日期是否符合要求
      {
        printf("%d-%02d-%02d\n",year,month,day); // 满足要求则按指定格式输出日期
      }
    }
  }
  return 0; // 返回0,表示程序执行成功
}
点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论