NextDate函数包含三个变量:month、day、year,函数的输出为输入日期后一天的日期。
例如,输入2006年3月7日,则函数的输出为2006年3月8日。要求输入变量month、day、year均为整数值,并且满足下列条件:
1、1<=month<=12
2、1<=day<=31
3、1812<=year<=2012
1)有效等价类为:
M1={月份:1<=月份<=12}
D1={日期:1<=日期<=31}
Y1={年份:1812<=年<=2012}
2)若条件1~3中任何一个条件失效,则NextDate函数都会产生一个输出,指明相应的变量超出取值范围,比如“month的值不在12范围中”。显然还存在这大量的year、month、day的无效组合,NextDate函数将这些组合作为统一的输出:“无效输入日期”。
#include <stdio.h> #include <stdlib.h> int main(){ int Month[12]={0,31,27,31,30,31,30,31,31,30,31,30,31}; int year,month,day; scanf("%d%d%d",&year,&month,&day); //判断闰年 if((year%4==0&&year%100!=0)||year%400==0) Month[2]=28; //判断是否超出范围 if(year>2012||year<1812||month>12||month<1||day<1||day>Month[month]) printf("无效输入日期"); else{ //是否为一年的最后一天 if(month==12&&day==31){ year+=1; printf("%d 1 1",year); } //是否为一个月的最后一天 else if(day==Month[month]){ month+=1; printf("%d %d 1",year,month); } else{ day+=1; printf("%d %d %d",year,month,day); } } return 0; }
#include <stdio.h>
#include <stdlib.h>
int main(){
int Month[12]={0,31,27,31,30,31,30,31,31,30,31,30,31};
int year,month,day;
scanf("%d%d%d",&year,&month,&day);
//判断闰年
if((year%4==0&&year%100!=0)||year%400==0)
Month[2]=28;
//判断是否超出范围
if(year>2012||year<1812||month>12||month<1||day<1||day>Month[month])
printf("无效输入日期");
else{
//是否为一年的最后一天
if(month==12&&day==31){
year+=1;
printf("%d 1 1",year);
}
//是否为一个月的最后一天
else if(day==Month[month]){
month+=1;
printf("%d %d 1",year,month);
}
else{
day+=1;
printf("%d %d %d",year,month,day);
}
}
return 0;
}