1、对于整数5想要输出05的形式就可以用%02d
2、scanf(“a/b/c”)输入的时候输入a/b/c就不会报错,需要输入固定字符什么的直接在scanf的双引号里面写
3、日期问题的暴力解法,思路枚举可以将起止日期看做整数,先得出这个整数所有可能的情况,然后再从这些情况里面去进行特判,比较复杂的实现,单拎函数进行解决
4、除以10000,就是取这个数前4位的数;%10000就是取这个数后4位的数
printf
日期问题-还有一个测试用例死活过不了我真的麻了........
#include <iostream>
using namespace std;
int a,b,c;
int check_month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check(int y,int m,int d){
if(m==0||m>12||d==0) return false;
if((y%4==0&&y%100!=0)||y%400==0) check_month[2]=29;//判断年份之后,月份天数可以合到一起判断
if(d>check_month[m]) return false;
return true;
}
int main()
{
scanf("%d/%d/%d",&a,&b,&c);
for(int i=19600101;i<=20591231;i++){
int year=i/10000;//除以10000,就是取这个数前4位的数
int month=(i%10000)/100;//%10000就是取这个数后4位的数
int day=(i%100);
if(check(year,month,day))//单写一个函数判断年月日对应的数字是否合法
{
if(year%100==a&&month==b&&day==c||year%100==c&&month==a&&day==b||year%100==c&&month==b&&day==a)//直接用||符号......晕.....
printf("%d-%02d-%02d\n",year,month,day);
}//还有这里如果不用或||符号用三个printf输出会导致一个用例过不了,真的很奇怪
}
return 0;
}