题目要求: 输入日期 然后计算两天后的日期
#include<stdio.h>
int main(){
while(true){
int a[3];
int i;
printf("============================\n");
printf("请输入月 日 年的数字\n");
printf("例如这样的格式\n11 3 2017\n");
printf("\n");
for(i=0;i<3;i++){
scanf("%d",&a[i]);
}
//对月份进行初步判断
if(a[0]<0||a[0]>12){
printf("月份格式不正确\n");
continue ;
}
//对日份进行初步判断
if(a[1]<1||a[1]>31]){
printf("日份格式不正确\n");
continue ;
}
//对大月进行判断
if(a[0]==1||a[0]==3||a[0]==5||a[0]==7||a[0]==8||a[0]==10){
if(a[1]==31){
a[1]=2;
a[0]++;
}else if(a[1]==30){
a[1]=1;
a[0]++;
}else{
a[1]=a[1]+2;
}
}
//对小月进行判断
else if(a[0]==4||a[0]==6||a[0]==9||a[0]==11){
if(a[1]==31) {
printf("日份格式不正确\n");
continue ;
}else if(a[1]==30){
a[1]=2;
a[0]++;
}else if(a[1]==29){
a[1]=1;
a[0]++;
}else{
a[1]=a[1]+2;
}
}
else if(a[0]==2){
//对2月进行判读
if((a[2]/4==0&&a[2]/100!=0)||(a[2]/400==0)){
if(a[1]==29){
a[1]=2;
a[0]++;
}else if(a[1]==28){
a[1]=1;
a[0]++;
}else{
a[1]=a[1]+2;
}
}else{
if(a[1]>=29){
printf("不是瑞年 日期 输入有误\n");
continue ;
}
else if(a[1]==28){
a[1]=1;
a[0]++;
}else{
a[1]=a[1]+2;
}
}
}else{
//对12月份单独判断 如果超过界限年份加1
if(a[1]==31){
a[1]=2;
a[0]=1;
a[2]++;
}else if(a[1]==30){
a[1]=1;
a[0]=1;
a[2]++;
}else{
a[1]=a[1]+2;
}
}
printf("\n");
printf("两天后的日期是\n");
printf("\n");
printf("%d/%d/%d\n",a[0],a[1],a[2]);
printf("\n");
}
} 输出格式如下============================
请输入月 日 年的数字
例如这样的格式
11 3 2017
11 31 2017
日份格式不正确
============================
请输入月 日 年的数字
例如这样的格式
11 3 2017
11 30 2017
两天后的日期是
12/2/2017
============================
请输入月 日 年的数字
例如这样的格式
11 3 2017 这个主要一个是对瑞年的判断 和 大月小月的 月末的判断(月份加一)
以及和对12月的月末进行判断(年份会加一 月份归一)
|