这是一道典型的模拟题,就是按照题目说的意思去做就行
要输出一个日期,这个日期必须满足:
这个日期是合法的(存在这个日期);
这个日期在规定范围内
因为答案最多只有三个,而且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 人评分
不知道哪里错了浏览:1212 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:724 |
回文数(一) (C语言代码)浏览:804 |
求圆的面积 (C语言代码)浏览:1356 |
简单的a+b (C语言代码)浏览:560 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:536 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:583 |
The 3n + 1 problem (C语言代码)浏览:541 |
永远的丰碑 (C语言代码)浏览:600 |
排序算法(选择,插入,冒泡)浏览:874 |