一、首先我们应该知道怎样判断一年是否为闰年
条件:能被4整除且不能被100整除或者能被400整除的年份为闰年
二、代码
int main()
{
int year, leap; //定义两个整型变量year与leap
printf("请输入年份:");
scanf_s("%d", &year); //输入一个年份
if (year % 4 == 0) //如果这个年份能被4整除
{
if (year % 100 == 0) //如果这个年份能被100整除
{
if (year % 400 == 0) //如果这个年份能被400整除
leap = 1;
else
leap = 0; //这个数不能被400整除则将leap置为0
}
else
leap = 1; //这个数不能被100整除则将leap置为1
}
else
leap = 0; //这个数不能被这三个数中的任何一个数整除
if (leap)
printf("%d is a leap year\n", year);
else
printf("%d is not a leap year\n", year);
return 0;
}
三、过程中没有注意到的问题
1、由于我用的vs2013,在if嵌套的过程中不能确定到底else应该对于那个if
2、最后输出判断的时候,我写的是if(leap=1),运行的时候发现能正常运行,但是永远都是闰年,后来室友跟我说是因为那句话永远都是对的,应该改成if(leap)或者if(leap==1),感觉自己还是对赋值符号跟等于符号没有分清楚
3、vs2013要求输入必须为scanf_s形式,在vc6.0中直接scanf就可以了
四、反思
更简便的算法:if (year%4==0&&year%100!=0||year%400==0) leap=1; else leap=0;