C语言闰年判断代码错误与改进
C语言闰年判断代码错误与改进
本文分析了一段用于判断2001年到2101年之间闰年个数的C语言代码,并针对其中存在的错误和可以改进的地方进行了说明。
原始代码:
#include <stdio.h>
int main()
{
int i; int count=0;
scanf('%d', &i);
for (i=2001;i<2101;i++)
{
if ((i%4==0 && i%100!=0) || i%400==0)
{
count++;
}
printf('%d', &count);
return 0;
}
错误与改进:
- 缺少右大括号: 原始代码中
for循环缺少一个右大括号}来结束循环体。 - printf函数参数错误: 在
printf函数中,应该使用%d格式化字符串来打印整数变量count的值,而不是使用&count,后者会打印count的内存地址。 - 缺少用户提示: 在
scanf函数中,没有提示用户输入任何内容。为了提高用户体验,应该添加一个字符串来提示用户输入年份。 - 缺少输入校验: 在
scanf函数中,对用户输入的i没有进行错误检查。如果用户输入了无效字符,程序可能会出现异常行为。
修改后的代码:
#include <stdio.h>
int main()
{
int i;
int count = 0;
printf('请输入一个年份:');
if (scanf('%d', &i) != 1) {
printf('输入错误!\n');
return 1;
}
for (i = 2001; i < 2101; i++)
{
if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0)
{
count++;
}
}
printf('符合条件的年份个数:%d\n', count);
return 0;
}
改进说明:
- 增加了
scanf的返回值检查,确保用户输入的是数字 - 增加了错误提示信息,提升用户体验
- 添加了注释,使代码更易读
修改后的代码修复了原始代码中的错误,并进行了一些改进,使其更加健壮和易于理解。
原文地址: https://www.cveoy.top/t/topic/mUh 著作权归作者所有。请勿转载和采集!