上山打老虎 发表于 2021-7-29 21:51:48

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

题目要求: 输入日期 然后计算两天后的日期
#include<stdio.h>
int main(){
while(true){
int a;
int i;
printf("============================\n");
printf("请输入月 日 年的数字\n");
printf("例如这样的格式\n11 3 2017\n");
printf("\n");
for(i=0;i<3;i++){
scanf("%d",&a);
}
//对月份进行初步判断
if(a<0||a>12){
printf("月份格式不正确\n");
continue ;

}
//对日份进行初步判断
if(a<1||a>31]){
printf("日份格式不正确\n");
continue ;

}
//对大月进行判断
if(a==1||a==3||a==5||a==7||a==8||a==10){
if(a==31){
a=2;
a++;
}else if(a==30){
a=1;
a++;
}else{
a=a+2;
}
}
//对小月进行判断
else if(a==4||a==6||a==9||a==11){

if(a==31) {
printf("日份格式不正确\n");
continue ;

}else if(a==30){
a=2;
a++;
}else if(a==29){
a=1;
a++;
}else{
a=a+2;
}
}
else if(a==2){
//对2月进行判读
if((a/4==0&&a/100!=0)||(a/400==0)){
if(a==29){
a=2;
a++;
}else if(a==28){
a=1;
a++;
}else{
a=a+2;
}
}else{
if(a>=29){
printf("不是瑞年 日期 输入有误\n");
continue ;
}
else if(a==28){
a=1;
a++;
}else{
a=a+2;
}

}
}else{
//对12月份单独判断 如果超过界限年份加1
if(a==31){
a=2;
a=1;
a++;
}else if(a==30){
a=1;
a=1;
a++;
}else{
a=a+2;
}
}
printf("\n");
printf("两天后的日期是\n");
printf("\n");
printf("%d/%d/%d\n",a,a,a);
printf("\n");


}

}
输出格式如下
============================
请输入月 日 年的数字
例如这样的格式
11 3 2017

11 31 2017
日份格式不正确
============================
请输入月 日 年的数字
例如这样的格式
11 3 2017

11 30 2017

两天后的日期是

12/2/2017

============================
请输入月 日 年的数字
例如这样的格式
11 3 2017



这个主要一个是对瑞年的判断 和 大月小月的 月末的判断(月份加一)
以及和对12月的月末进行判断(年份会加一 月份归一)



文档来源:51CTO技术博客https://blog.51cto.com/hiszm/3199558
页: [1]
查看完整版本: 用C语言实现: 输入日期然后计算两天后的日期