c语言,输入任意起始年份整数 N和结束年份M,输出中间所有的闰年年份,5个换一行,每个年份占5个字符。 判断任意年份是否为闰年,需要满足以下条件中的任意一个: ① 该年份能被 4 整除同时不能被 100 整除; ② 该年份能被400整除。
时间: 2024-03-12 19:45:03 浏览: 46
好的,以下是 C 语言的代码实现:
```c
#include <stdio.h>
int main() {
int N, M, count = 0;
scanf("%d%d", &N, &M);
for (int year = N; year <= M; year++) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
printf("#%4d", year);
count++;
if (count % 5 == 0) {
printf("\n");
}
}
}
return 0;
}
```
这段代码实现了输入起始年份和结束年份,然后遍历这些年份,判断是否为闰年,如果是,则输出该年份,并统计已输出的闰年个数,每输出 5 个换一行。
相关问题
编写一C语言程序,计算任意输入的两个年份之间一共有多少个闰年(包括这两个年份)输入格式: 年份1年份2(年份1<年份2)输出格式:一个整数
编写一个C语言程序来计算两个给定年份之间的闰年总数,可以按照以下步骤进行:
首先,我们需要了解闰年的规则:
1. 能被4整除的年份是闰年,除非它能被100整除;
2. 但是,如果这样的年份能被400整除,它依然是闰年。
接下来是C语言代码实现:
```c
#include <stdio.h>
// 判断是否为闰年的辅助函数
int is_leap_year(int year) {
if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) {
return 1; // 是闰年
} else {
return 0; // 非闰年
}
}
// 计算两个年份间闰年数的主函数
int count_leap_years(int start_year, int end_year) {
int leap_years = 0;
for (int i = start_year; i <= end_year; ++i) {
if (is_leap_year(i)) {
leap_years++;
}
}
return leap_years;
}
int main() {
int start_year, end_year;
printf("请输入起始年份 (年份1): ");
scanf("%d", &start_year);
printf("请输入结束年份 (年份2): ");
scanf("%d", &end_year);
// 确保年份1小于年份2
if (start_year > end_year) {
int temp = start_year;
start_year = end_year;
end_year = temp;
}
int leap_years_count = count_leap_years(start_year, end_year);
printf("从 %d 到 %d 之间有 %d 个闰年.\n", start_year, end_year, leap_years_count);
return 0;
}
```
当你运行这个程序并输入两个年份时,它将计算并显示在这两个年份内的闰年数量。例如,如果你输入2000和2020,它会返回19,因为这10年间有19个闰年(2000、2004、2008、2012、2016、2020)。
每一年都会有很多特殊的日子,而有一种特殊的方式叫做“吻合日”。“吻合日”的定义为:如果某日的日期对10取模后的值等于该日的星期值(周日视为7),则称该日为“吻合日”。如2021年3月3日为周三,是“吻合日”。Jaanai想要你帮她求出在一段时间范围内的“吻合日”的数量及每个星期值下“吻合日”的具体数量。 输入格式: 包含m组数据(m不给出),每组数据有两行: 第一行三个数,代表起始年月日;(含) 第二行三个数,代表终止年月日。(不含) 输出格式: 共m行,每行八个整数,第一个整数代表给出的时间范围内“吻合日”的总数,第2-8个整数代表周一至周日分别的“吻合日”数量,整数之间由一个空格分隔。 行末没有多余空格,但是有换行符。,用c语言
```c
#include <stdio.h>
// 判断是否为闰年
int isLeap(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
// 计算某年某月的天数
int getDays(int year, int month) {
if (month == 2) {
return isLeap(year) ? 29 : 28;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
} else {
return 31;
}
}
// 计算某一天是星期几
int getWeekday(int year, int month, int day) {
int c = year / 100; // 世纪
year %= 100; // 年
if (month == 1 || month == 2) {
month += 12;
year--;
}
int w = year + year / 4 + c / 4 - 2 * c + 13 * (month + 1) / 5 + day - 1;
w = (w % 7 + 7) % 7;
return w == 0 ? 7 : w;
}
int main() {
int y1, m1, d1, y2, m2, d2;
while (scanf("%d%d%d%d%d%d", &y1, &m1, &d1, &y2, &m2, &d2) == 6) {
int total = 0, cnt[7] = {0};
for (int y = y1; y < y2; y++) {
for (int m = 1; m <= 12; m++) {
int days = getDays(y, m);
for (int d = 1; d <= days; d++) {
if (d % 10 == getWeekday(y, m, d)) {
total++;
cnt[getWeekday(y, m, d) - 1]++;
}
}
}
}
for (int m = 1; m < m2; m++) {
int days = getDays(y2 - 1, m);
for (int d = 1; d <= days; d++) {
if (d % 10 == getWeekday(y2 - 1, m, d)) {
total++;
cnt[getWeekday(y2 - 1, m, d) - 1]++;
}
}
}
for (int d = 1; d < d2; d++) {
if (d % 10 == getWeekday(y2 - 1, m2, d)) {
total++;
cnt[getWeekday(y2 - 1, m2, d) - 1]++;
}
}
printf("%d", total);
for (int i = 0; i < 7; i++) {
printf(" %d", cnt[i]);
}
printf("\n");
}
return 0;
}
```
阅读全文