C程序设计(第五版)谭浩强 著 36页
个人制作参考答案(仅供参考,欢迎讨论)
输出1900——2000年中是闰年的年份,符合下面两个条件之一的年份是闰年:
(1)能被4整除但不能被100整除;
(2)能被100整除且能被400整除;
解题思路:两个条件是二选一,所以是“或”的关系,其中能被400且100整除的一定能被4整除,不能被4整除也就不能被100或400整除。首先得能被4整除,这些数中除了被100整除的年份都为闰年,但是要加上能被400整除的。所以t判断条件为:(a%40&&a%100!=0||a%4000)
下面是代码,比较全面点的:
#include<stdio.h>
int main()
{
int a,b,t,j=0;
printf("请输入起止年份:");
scanf("%d",&a);
printf("请输入终止年份:");
scanf("%d",&b);
if(a<=b)//判断是否正确输入年份
{
if(a==b)//确定某年是否为闰年
{
if(a%4==0&&a%100!=0||a%400==0)
printf("%d是闰年\n",a);
else printf("%d不是闰年\n",a);
}
if(a<b)//输出区间内的所有闰年,并总计个数
{
for(;a<=b;a++)
{
if(a%4==0&&a%100!=0||a%400==0)
{
j++;
printf("%8d",a);
}
}
printf("\n%d到%d共有%d个闰年\n",a,b,j);
}
}
else
printf("错误输入\n");//提示
return 0;
}
运行如下: