算法分析:
- 如果X能被Y整除,则余数为0,即如果X%Y的值等于0,则表示X能被Y整除。
- 首先将是否是闰年的标志leap初始值设置为0(非闰年),仅当year为闰年时将leap的位置为1。
初始代码如下:
//从键盘输入一个年份year(4位十进制数),判断其是否是闰年
//闰年的判断条件是能被4整除、但不能被100整除,或者被400整除
#include<stdio.h>
int main(void)
{
int year, leap=0; //leap初始值为0,即预备为非闰年
printf("输入年份: \n");
scanf("%4d",&year); //从键盘输入一个年份保存至变量year
if(year%4==0)
{
if(year%100!=0) //若year能被4整除但不能被100整除,则是闰年,leap赋值为1
{
leap = 1;
}
}
else //否则,若year能被400整除,则是闰年,leap赋值为1
{
if(year%400==0)
{
leap = 1;
}
}
if(leap) //若leap的值为1,即是闰年
{
printf("%d年是闰年\n",year);
}
else //否则,不是闰年
{
printf("%d年不是闰年\n",year);
}
return 0;
}
键盘输入:
2024 回车
结果如下:
键盘输入:
2049 回车
结果如下:
优化后代码:
//从键盘输入一个年份year(4位十进制数),判断其是否是闰年
//闰年的判断条件是能被4整除、但不能被100整除,或者被400整除
#include<stdio.h>
int main(void)
{
int year, leap=0; //leap初始值为0,即预备为非闰年
printf("输入年份: \n");
scanf("%4d",&year); //从键盘输入一个年份保存至变量year
if((year%4==0&&year%100!=0)||(year%400==0))
{
printf("%d年是闰年\n",year);
}
else
{
printf("%d年不是闰年\n",year);
}
return 0;
}
键盘输入:
2036 回车
结果如下: