如何使用 If 语句、嵌套 If 语句和 Else If 语句编写 C 程序来判断闰年或平年?在开始编写判断闰年的程序之前,让我们先了解其背后的逻辑和定义。
普通年份有 365 天,而 C 语言中的闰年有 366 天。这一额外的一天被加到了二月份,所以我们有了 2 月 29 日。
所有能被 4 整除的年份都是闰年,但世纪年除外。世纪年是指以 00 结尾的年份,例如 1200、1300、2400、2500 等(显然它们能被 100 整除)。对于这些年份,我们需要进一步计算来判断是否为闰年。
- 如果世纪年能被 400 整除,则为闰年。
- 如果不能被 400 整除,则不是闰年。
使用 If 语句判断闰年的 C 程序
此示例允许用户输入任何值。然后,此程序将使用 If 语句检查用户输入的是闰年还是平年。
#include <stdio.h>
int main()
{
int yr;
printf("\n Please Enter any number you wish \n ");
scanf("%d", &yr);
if (( yr%400 == 0)|| (( yr%4 == 0 ) &&( yr%100 != 0)))
printf("\n %d is a Leap. \n", yr);
else
printf("\n %d is not. \n", yr);
return 0;
}

我们来检查一个普通年份。
Please Enter any number you wish
1300
1300 is not.
在此判断闰年的 C 程序示例中,我们使用了逻辑 AND 和逻辑 OR 运算符,因为我们需要在单个 If 语句中检查多个条件。让我们将条件分解以更好地理解它。
第一个 C 编程 条件 (yr%400 == 0) 将检查余数是否正好等于 0。根据算法,任何能被 400 整除的数都是闰年。
OR
第二个 If 语句 条件包含 2 个语句,因此它们必须为 TRUE。
第一个条件 (yr%4 == 0) 将检查其余数是否正好等于 0。如果条件为 False,它将退出条件,因为检查其他条件没有意义。它不是。 AND
第二个条件将检查 (yr% 100) 的余数是否不等于 0。如果为 TRUE,则给定的数字不是世纪年。
根据算法,任何能被 4 整除但不能被 100 整除的数都是闰年。请参阅 C 语言中的逻辑运算符 以了解逻辑 AND 和逻辑 OR 的功能。
使用 Else If 语句判断闰年的 C 程序
此程序允许用户输入任何数字。然后,此 程序 将使用 Else If 语句 检查用户输入的是闰年还是平年。
#include <stdio.h>
int main()
{
int yr;
printf("\n Please Enter as you wish \n");
scanf("%d", &yr);
if ( yr%400 == 0)
printf("\n%d is a Leap Year. \n", yr);
else if ( yr%100 == 0)
printf("\n%d is not. \n", yr);
else if ( yr%4 == 0 )
printf("\n%d is a Leap Year. \n", yr);
else
printf("\n%d is not. \n", yr);
return 0;
}

在此判断闰年的 C 程序示例中,用户将输入任何数字进行检查。第一个 If 条件将检查 (yr% 400) 的余数是否正好等于 0。根据算法,任何能被 400 整除的数都是闰年。如果此条件失败,则将转到下一个条件。
第二个 If 条件检查 (yr% 100),余数是否正好等于 0。根据算法,任何不能被 400 整除但能被 100 整除的数都不是闰年(世纪年)。我们在第一个 If 语句中检查了 (yr% 400)。因为它失败了,所以它进入了第二个条件。如果第一个和第二个条件都失败,则将转到第三个条件。
第三个条件将检查 year mod 4 是否等于 0。如果此条件为 True,则给定的年份是闰年,因为我们在前一个条件中已检查过世纪年。如果所有语句都失败,它将转到最后的 Else 语句。如果以上所有语句都失败,则不是闰年。
使用嵌套 If 语句判断闰年的 C 程序
这允许用户输入任何数字。接下来,此程序将使用 嵌套 If 检查用户输入的是闰年还是平年。
在此判断闰年的 C 程序示例中,第一个 If 条件将检查 (year%4) 的余数是否正好等于 0。
- 如果表达式的计算结果为 False,则给定的数字不是闰年。
- 如果为 True,那么我们需要进一步检查世纪年。因此,编译器将转到嵌套 If 条件。
第二个 If 条件检查 (year%100) 的余数是否正好等于 0?
- 如果此条件为 False,则不是世纪年。因此,它是闰年。
- 如果为 True,那么我们需要检查该数字是否能被 400 整除。因此,编译器将转到另一个嵌套 If。
在此条件中,编译器将检查 (year%400) 的余数是否正好等于 0。
- 如果表达式的结果为 False,则给定的数字肯定不是闰年。
- 如果为 True,则给定的数字是 C 语言中的闰年。
#include <stdio.h>
int main()
{
int year;
printf("\n Please Enter any year you wish \n");
scanf("%d",&year);
if(year%4 == 0)
{
if( year%100 == 0)
{
if ( year%400 == 0)
printf("\n%d is a Leap.", year);
else
printf("\n%d is not.", year);
}
else
printf("\n%d is a Leap.", year );
}
else
printf("\n%d is not.", year);
return 0;
}

评论已关闭。