用C语言编写程序判定给定年份是否为闰年 年份由键盘输入
时间: 2024-10-18 11:21:00 浏览: 42
判断一个年份是否为闰年的规则如下:
1. 如果该年份能被4整除但不能被100整除,那么它是闰年;
2. 但是,如果该年份同时能被400整除,那么它仍然是闰年。
以下是使用C语言编写的简单程序,用于判断用户输入的年份是否为闰年:
```c
#include <stdio.h>
int is_leap_year(int year) {
if (year % 4 == 0) {
if (year % 100 != 0 || (year % 400 == 0)) { // 如果不是百年闰年或者既是百年闰年又是400倍数
return 1; // 返回1表示是闰年
}
} else {
return 0; // 非4的倍数,则不是闰年
}
return 0; // 不需要返回这个,因为前面已经进行了判断
}
int main() {
int year;
printf("请输入一个年份:");
scanf("%d", &year);
if (is_leap_year(year)) {
printf("%d年是闰年。\n", year);
} else {
printf("%d年不是闰年。\n", year);
}
return 0;
}
```
相关问题
当年份能够被4但不能被100整除时为闰年,或者年份能够被400整除时为闰年,据此可以设计判断输入的年份是否为闰年的C语言程序代码,具体代码如下。 通过分析上述代码画出程序的流程图,并以表格行式通过条件覆盖设计出判定条件和测试用例
在C语言中,我们可以编写如下的函数来判断一个给定的年份是否是闰年:
```c
#include <stdio.h>
// 定义一个函数is_leap_year 判断是否是闰年
int is_leap_year(int year) {
if (year % 4 == 0) { // 检查是否能被4整除
if (year % 100 == 0) { // 如果能被100整除
if (year % 400 == 0) { // 再检查是否能被400整除
return 1; // 能被400整除的是闰年
} else {
return 0; // 否则不是闰年
}
} else { // 否则年份不能被100整除
return 1; // 这样的年份是闰年
}
} else {
return 0; // 不能被4整除的年份肯定不是闰年
}
}
int main() {
int year;
printf("请输入一个年份:");
scanf("%d", &year);
if (is_leap_year(year)) {
printf("%d年是闰年。\n", year);
} else {
printf("%d年不是闰年。\n", year);
}
return 0;
}
```
**程序流程图:**
1. 输入年份
2. 分支结构开始,判断年份能否被4整除
- 能被100整除进入下一个分支
- 可否被400整除
- 被400整除返回1(闰年)
- 否则返回0(非闰年)
- 否则(即年份不能被100整除)返回1(闰年)
- 否则(即年份不能被100整除)直接返回1(闰年)
3. 不能被4整除直接返回0(非闰年)
**判定条件及测试用例(条件覆盖):**
1. 条件I: 年份能被4整除
- 测试用例1: 2000(满足400整除,是闰年)
- 测试用例2: 1900(满足4整除但不满足100整除,也是闰年)
2. 条件II: 年份能被4整除但不能被100整除
- 测试用例3: 2004(满足条件,是闰年)
- 测试用例4: 1988(同样满足条件,是闰年)
3. 条件III: 年份不能被4整除
- 测试用例5: 1901(不是闰年)
- 测试用例6: 1700(虽然能被4整除,但不能被100整除,也不是闰年)
这样就涵盖了所有可能的情况,完成了条件覆盖。
C语言判定2000-2500中的每一年是否为闰年
在C语言中,判断闰年的规则是根据公历闰年的定义来的,即闰年满足以下条件之一:
1. 年份能被4整除但不能被100整除(除非同时能被400整除)。
以下是一个简单的C语言程序,用于判断2000年至2500年间每年是否为闰年:
```c
#include <stdio.h>
int is_leap_year(int year) {
if (year >= 2000 && year <= 2500) { // 判断年份范围
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
return 1; // 闰年,返回1
} else {
return 0; // 非闰年,返回0
}
} else {
printf("Year out of range.\n");
return -1; // 年份不在指定范围内,返回-1作为错误标识
}
}
int main() {
int start = 2000, end = 2500;
for (int i = start; i <= end; i++) {
int result = is_leap_year(i);
if (result == 1) {
printf("%d is a leap year.\n", i);
} else if (result == 0) {
printf("%d is not a leap year.\n", i);
} else {
// 结果已处理,在主循环外不再输出
}
}
return 0;
}
```
这个程序会检查给定的年份是否符合上述规则,并根据结果打印相应的信息。如果输入的年份不在2000至2500之间,它还会提示“年份超出范围”。
阅读全文