您的位置:首页 > 编程语言 > C语言/C++

用C语言实现: 输入日期然后计算两天后的日期

2017-11-03 19:03 253 查看
题目要求: 输入日期 然后计算两天后的日期

#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月的月末进行判断(年份会加一 月份归一)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: