这是《C语言入门实战》系列的第8篇。
上一篇:C语言入门实战(7):switch-case计算年内天数(平年/闰年计算)
文章目录
- 题目
- 提示
- 要求
- 前置知识
- 参考代码
- 代码复盘
对于任意输入的一个日期(年月日分别用变量y、m、d表示),求出它的第二天的年月日。结果以yyyy/MM/dd的格式输出。
提示- 要考虑到月末、年末以及闰年的情形。
- 计算当月天数可以使用switch语句实现。
输入输出格式示例1:
输入:2019 12 31<回车>
输出:2020/01/01
输入输出格式示例2:
前置知识输入:2020 02 28<回车>
输出:2020/02/29
整百年: 能被400整除的是闰年;非整百年:能被4整除的为闰年。
平年365天,二月为28天。
闰年为366天,二月为29天。
参考代码#include代码复盘int main() { int y,m,d; scanf("%d %d %d", &y, &m, &d); // 平年2月份28天 int daysInFebruary = 28; // 如果是闰年,则二月份29天 if(y%400==0 || (y%100!=0 && y%4==0)) { daysInFebruary = 29; } // 计算当前月的最大天数 int maxDays; switch(m) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: maxDays = 31; break; case 2: maxDays = daysInFebruary; break; default: maxDays = 30; break; } // 处理天数+1,如果天数超出当月最大天数 // 继续处理月份+1,如果月份超出当年最大月份 // 则年份+1 d += 1; if(d > maxDays) { // 超出当前月最大天数1天,算作下一个月1号 d = 1; // 月份+1 m += 1; // 月份超出,则年份+1 if(m > 12) { m = 1; y += 1; } } printf("%d/%02d/%02d", y, m, d); return 0; }
熟悉switch-case的用法,注意每个分支最后都需要break。
头文件stdio.h中声明的scanf()和printf()是标准库中用于处理标准输入和输出的库函数。



