描述
我们知道一年有12个月,每个月最多有31天,年有平年和闰年之分,本题目要求如果输入一个日期,程序需要判断用户输入的日期是否正确。
输入
输入多组数据,请处理到文件结束。 用户输入是三个数字,分别表示年,月和日。 例如 2007 10 21 ,表示2007年10月21日,这个输入经过判断是正确的。又例如输入 1993 11 38 ,这个输入经过判断是错误的,因为日期不能超过31天。
输出
对于每组数据输出结果。 程序的输出分为两种,1或者0。1表示输入正确,0表示输入错误。
解题思路:1,先判断n的范围,int是否存得下,答案是NO,so 用long long?
? ? ? ? ? ? ? ? ? ?2,因为是多组输入,所以用while(scanf()!=EOF)
? ? ? ? ? ? ? ? ? ?3,先判断y与x的值、范围;
? ? ? ? ? ? ? ? ? ?4,之后判断是平年还是闰年;
? ? ? ? ? ? ? ? ? ? 5,再判断r的值;最后记得printf("\n");
? ? ? ? ? ? ? ? ? ?
#include<stdio.h>
int main(){
long long n;
int y,r;
while(scanf("%lld%d%d",&n,&y,&r)!=EOF){
if(y>=1&&r>=1&&y<=12&&r<=31)
{
if(y==1||y==3||y==5||y==7||y==8||y==10||y==12){
if(r<=31)
printf("1");
else printf("0");
}else if(y!=2){
if(r<=30)
printf("1");
else printf("0");
}
else {
if(n%400==0||(n%4==0&&n%100!=0)){
if(r<=29)
printf("1");
else printf("0");}
else if(r<=28)
printf("1");
else printf("0");
}
}
else printf("0");
printf("\n");
}
}
|