H2330819027


私信TA

用户名:dotcpp0701405

访问量:8074

签 名:

指向函数指针数组的指针int(*(*p[4]))(int int)

等  级
排  名 129
经  验 7424
参赛次数 1
文章发表 79
年  龄 18
在职情况 学生
学  校 Hzu university
专  业 软件工程

  自我简介:

TA的其他文章

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

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

  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分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区