C语言输出1000年至9999年所有的对称日
时间: 2024-02-03 10:13:50 浏览: 32
对称日是指日期的数字在对称轴两侧对称,例如2022年2月2日就是对称日。根据这个定义,我们可以写出以下代码来输出1000年至9999年所有的对称日:
```c
#include <stdio.h>
int is_symmetric(int year, int month, int day) {
int digits[8], i;
for (i = 0; i < 8; i++) {
digits[i] = 0;
}
i = 0;
while (year > 0) {
digits[i] = year % 10;
year /= 10;
i++;
}
while (month > 0) {
digits[i] = month % 10;
month /= 10;
i++;
}
while (day > 0) {
digits[i] = day % 10;
day /= 10;
i++;
}
for (i = 0; i < 4; i++) {
if (digits[i] != digits[7 - i]) {
return 0;
}
}
return 1;
}
int main() {
int year, month, day;
for (year = 1000; year <= 9999; year++) {
for (month = 1; month <= 12; month++) {
int max_day;
if (month == 2) {
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
max_day = 29;
} else {
max_day = 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
max_day = 30;
} else {
max_day = 31;
}
for (day = 1; day <= max_day; day++) {
if (is_symmetric(year, month, day)) {
printf("%d-%02d-%02d\n", year, month, day);
}
}
}
}
return 0;
}
```
这个程序使用了一个 `is_symmetric` 函数来判断一个日期是否是对称日。该函数先将年份、月份和日期的数字分别存储到一个长度为 8 的数组中,然后判断前四个数字和后四个数字是否对称。对于每个年份,程序会枚举所有的月份和日期,判断其是否是对称日,并将其输出。