博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【C语言】练习5-8
阅读量:6986 次
发布时间:2019-06-27

本文共 1544 字,大约阅读时间需要 5 分钟。

  •  题目来源:《The C programming language》中的习题P92
  •  练习5-8: 一个日期转换的问题,把某月某日这种日期表示形式转换为某年中第几天的表示形式,反之亦然。例如,3月1日是非闰年的第60天,是闰年的第61天。在这里,我们定义下列两个函数以进行日期转换:函数day_of_year将某月某日的日期表示形式转换为某一年中的第几天的表示形式,函数month_day则执行相反的转换。

  代码实现

#include
int daytab[2][13] = { {
0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, // 平年的月份 {
0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, // 闰年的月份 };/* 把某月某日这种日期表示形式转换为某年中第几天 */int day_of_year(int year, int month, int day){ int result = 0; int flag = year%4 == 0 && year%100 != 0 || year%400==0; //判断是否为闰年。是则返回1,否则返回0 int i = 0; // 错误检查 if (year < 1752 || month < 1 || month > 12 || day < 1) return -1; if(day > daytab[flag][month]){ return -1; } // 循环 for(; i < month; i++){ result += daytab[flag][i]; } result += day; return result;}/* 把某年中第几天表示形式转换为某月某日这种日期形式 */int month_day(int year, int theDays, int *pmonth, int *pday){ int flag = year%4 == 0 && year%100 != 0 || year%400==0; //判断是否为闰年。是则返回1,否则返回0 int i = 0; // 错误检查 if (year < 1752 || theDays < 1){ return -1; } if ((flag && theDays > 366) || (!flag && theDays > 365)){ return -1; } for(; theDays > daytab[flag][i] && i <= 12 ; i++){ theDays -= daytab[flag][i]; } *pmonth = i; *pday = theDays; return 0;}/* 主函数 */void main(){ int month, day; printf("%d\n",day_of_year(1988, 3, 1)); month_day(1988, 61, &month, &day); printf("month = %d, day = %d\n", month, day);}

 

转载地址:http://mimpl.baihongyu.com/

你可能感兴趣的文章
理论积累1
查看>>
【355天】跃迁之路——程序员高效学习方法论探索系列(实验阶段113-2018.01.26)...
查看>>
spring security filter获取请求的urlpattern
查看>>
Nodejs alpine 基础docker镜像构建
查看>>
网页性能分析不完全指南
查看>>
简要记录下IDEA进行远程调试
查看>>
阿里云即将全球首发云骨干网
查看>>
Nginx 安装部署
查看>>
微信小程序[第八篇] -- 实现完整的相册列表逻辑(小程序端&服务器端)
查看>>
ThinkCMF5应用开发流程
查看>>
我的Beego学习笔记
查看>>
servlet生命周期
查看>>
Python数据分析
查看>>
mui进度条使用解析
查看>>
IntelliJ idea 创建Maven多模块项目并运行
查看>>
一步一步教你如何搭建自己的视频聚合站
查看>>
使用canvas实现图片压缩
查看>>
一步一步开发安卓下的react-native应用系列之第一个RN应用
查看>>
JVM类加载过程 & 双亲委派模型
查看>>
【IE8】在IE8 使用 button 时需要为标签指定相应的 type 类型
查看>>