#include <stdio.h>
int main() {
int year;
printf("Please enter a year:\n");
scanf("%d", &year);
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
printf("%d is a leap year.\n", year);
} else {
printf("%d is not a leap year.\n", year);
}
return 0;
}
代码存在的问题:
在代码实现中,没有对输入的年份进行边界判断,如果输入的是负数或者其他非法的年份,程序会输出错误的结果。可以加上对输入的年份的范围进行判断,比如只接受大于0的正整数年份。
修改后的代码:
#include <stdio.h>
int main() {
int year;
printf("Please enter a year (greater than 0):\n");
scanf("%d", &year);
if (year <= 0) {
printf("Invalid input.\n");
return 0;
}
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
printf("%d is a leap year.\n", year);
} else {
printf("%d is not a leap year.\n", year);
}
return 0;
}