#include <stdio.h>
int irn;
//判断是闰年还是平年,闰年返回1,平年返回0
int isRunNian(int *y)
{//判断是否为闰年if((*y%4==0 && *y%100!=0) || *y%400==0) //如果是闰年{return (1);}else //如果是平年{return (0);}
}
void yesterday(int *y, int *m, int *d)
{int day=*d-1;int month=*m;int newYear=*y;if(day==0){month=*m-1;if(month==0){newYear=*y-1; month=12;day=31;}else{if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10){day=31;}else if(month==4 || month==6 || month==9 || month==11){day=30;}else if(month==2){irn=isRunNian(y);if(irn==1){day=29;}else{day=28;    }}}}printf("昨天是%d年%d月%d日。\n", newYear,month,day);
}
void tomorrow(int *y, int *m, int *d)
{int newDay=*d+1;int newMonth=*m;int newYear=*y;if(*m==1 || *m==3 || *m==5 || *m==7 || *m==8 || *m==10 || *m==12){if(*d==31){if(*m==12){newYear=*y+1;newMonth=1;newDay=1;}}}else if(*m==4 || *m==6 || *m==9 || *m==11){if(*d==30){newDay=1;newMonth=*m+1;}}else if(*m==2){irn=isRunNian(y);if(irn){if(*d==29){newDay=1; newMonth=*m+1;}}else{if(*d==28){newDay=1; newMonth=*m+1;}}}printf("明天是%d年%d月%d日。", newYear,newMonth,newDay);
}void main()
{int y=0,m=0,d=0;int irn;printf("请输入年份");scanf("%d",&y);while(y<1){   printf("请重新输入年份");scanf("%d",&y);}irn=isRunNian(&y);printf("请输入月份"); scanf("%d",&m);while(m<1 || m>12){printf("请重新输入月份"); scanf("%d",&m);}printf("请输入日期"); scanf("%d",&d);do{if(d<1 || d>31){printf("请重新输入日期"); scanf("%d",&d);}else{if((m==4 || m==6 || m==9 || m==11) && d==31){printf("输入错误,%d月没有%d天,请重新输入日期",m,d); scanf("%d",&d);}else if(m==2){if(irn==0 && d>28){printf("输入错误,%d是平年,%d月没有%d天,请重新输入日期",y,m,d); scanf("%d",&d);}else if(irn==1 && d>29){printf("输入错误,%d是闰年,%d月没有%d天,请重新输入日期",y,m,d); scanf("%d",&d);}else{break;}}else{break;}}}while(1);printf("您输入的是%d年%d月%d日\n", y,m,d);yesterday(&y,&m,&d);tomorrow(&y,&m,&d);putchar('\n');
}

编写函数,求出并设置y年m月d日的前一天或后一天的日期(能正确判断闰年)相关推荐

  1. C语言面试题--已知整形变量在内存中占4个字节的空间,现有一无符号整形变量a = 0x20190125,请编写函数求出变量a所占内存每个字节的值是多少?

    已知整形变量在内存中占4个字节的空间,现有一无符号整形变量a = 0x20190125,请编写函数求出变量a所占内存每个字节的值是多少? 用共用体方法:共用体内的空间是公用的,每一个成员都可以访问共用 ...

  2. [置顶] C语言实验:输入任意一个日期的年、月、日的值,求出从公元1年1月1日到这一天总共有多少天,并求出这一天是星期几。...

    要求:输入任意一个日期的年.月.日的值,求出从公元1年1月1日到这一天总共有多少天,并求出这一天是星期几. 简单的循环结构,并结合基姆拉尔森公式,注意月份转换. 下面是源码,仅供参考: #includ ...

  3. C语言试题七十一之请编写函数求出这个数的阶乘

    1. 题目 编写函数:求出这个数的阶乘,即 n!. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试中C程序设计科目.帮助C语言学者打好程序基础.C语言基础,锻炼您的逻辑思 ...

  4. C语言试题二十四之编写一个函数unsigned function(unsigned w),w使一个大于10的无符号整数,若w是n(n≥2)位的整数,则函数求出w后n-1位的数作为函数值返回。

    1. 题目 请编写一个函数unsigned function(unsigned w),w使一个大于10的无符号整数,若w是n(n≥2)位的整数,则函数求出w后n-1位的数作为函数值返回. 比如:w是1 ...

  5. EduCoder-程序设计技术R-函数-(第1关:求和)(第2关:回文数计算)(第3关: 编写函数求表达式的值)(第4关:阶乘数列)(第5关:亲密数)(第6关:公约公倍数)

    目录 第1关:求和 代码示例 第2关:回文数计算 代码示例 第3关: 编写函数求表达式的值 代码示例 第4关:阶乘数列 代码示例 第5关:亲密数 代码示例 第6关:公约公倍数 代码示例 第1关:求和 ...

  6. C语言设计函数求最大公约数,C语言程序设计课程设计--编写函数求取两个整数m,n的最大公约数和最小公倍数.doc_在线文库www.lddoc.cn...

    C语言程序设计课程设计--编写函数,求取两个整数m,n的最大公约数和最小公倍数.doc C语言程序设计课程设计C语言程序设计课程设计评语考勤(10)纪律(10)过程(40)设计报告(30)答辩(10) ...

  7. mysql编写函数 求1 n 偶数之和,编写求1 2 3 - n的函数.在main函数中调用该函数

    输入两个正整数m,n,编写求阶乘的函数,计算m!/(n!*(m-n)!). C语言函数解答,谢谢. #includelongfactorial(intm,intn){longsum=1,sum1=1; ...

  8. 编写函数求特殊a串和

    6-1 编写函数求特殊a串和 前言 学习python的日常 提示:以下是本篇文章正文内容,下面案例可供参考 题目: 给定两个均不超过9的正整数a和n,要求编写函数fn(a,n) 求a+aa+aaa++ ...

  9. 【勇敢牛牛,不怕困难】有手就行栏目:头歌教学平台 - 湖南工业大学刘强老师的C语言函数实战课堂作业答案 - > - > {求和+回文数计算+编写函数求表达式的值+阶乘数列+亲密数+公约数公倍数求解}

    第一关:求和 任务描述 题目描述:给你一个n,要求你编写一个函数求1+2+-+n. 输入 输入一个n 输出 输出1+2+-+n的和 测试说明 样例输入: 100 样例输出: 5050 分析: 这个是真 ...

最新文章

  1. java常见对象_Java/10_Java常见对象.md at master · DuHouAn/Java · GitHub
  2. 数据仓库中的维度表和事实表概述
  3. php数组循环0到32,通过数组php循环
  4. prometheus变量_TiKV 源码解析系列文章(四)Prometheus(下)
  5. java 多个监听_​Java中使用for循环对多个Jbutton按钮监听
  6. linux可配置哪些服务,不可不知 十大热门Linux服务器配置
  7. 音频分析工具librosa
  8. 总之就是不太可爱(思维严谨性的考验)
  9. 学云计算能干什么_电大是干什么的?属于什么教育?
  10. windows对图片进行标记处理等操作
  11. LiveZilla 详细 配置 设置 (三) 配置 LiveZilla 服务
  12. 搜索引擎类网站调查报告
  13. java语言多态性的表现形式_[Java教程]多态性的表现形式
  14. Ineligible Devices 不被识别的设备
  15. SpringBoot微服务技术中进程间通信原理
  16. 开启灯光就是近光吗_大灯开启是近光灯吗
  17. 学习编程的九个小白电脑知识
  18. 使用计算机小窍门,电脑使用的小技巧(适用小白)
  19. CNN的Python实现——第五章:梯度下降法的最优化方法
  20. oracle9i如何建表,oracle9i命令(一):手工创建数据库

热门文章

  1. Tomcat报Serveral ports(8005,8080,8009) required by Tomcat v8.0 Server at localhost are already in use
  2. 好不容易从流水线转码农的我又“失业”了...
  3. JQuery之addClass、removeClass和toggleClass的用法小结
  4. 会使用mysql_mysql必知必会--使用MySQL
  5. 动态壁纸安卓_安卓壁纸app下载_安卓壁纸官方下载
  6. 一阶微分方程的物理意义_一阶线性偏微分方程特征线解法.pdf
  7. [Android7.1][RK3399] 将设置首选网络类型由3G设置为LTE
  8. 计算机网页设计学什么软件,想学网页制作,要在电脑中装什么软件啊,哪儿有学习网页制作的知识...
  9. 无法打开计算机 eploxre 接口未知,绝地求生辅助发卡网Win7系统打开计算机属性提示“此项目的属性未知”解决方案...
  10. 机器学习实战3.3决策树项目案例02:预测隐形眼镜类型