Tomorrow never knows?(C程序设计进阶第2周)
问题描述
甲壳虫的《A day in the life》和《Tomorrow never knows》脍炙人口,如果告诉你a day in the life,真的会是tomorrow never knows?相信学了计概之后这个不会是难题,现在就来实现吧。
读入一个格式为yyyy-mm-dd的日期(即年-月-日),输出这个日期下一天的日期。可以假定输入的日期不早于1600-01-01,也不晚于2999-12-30。
输入
输入仅一行,格式为yyyy-mm-dd的日期。
输出
输出也仅一行,格式为yyyy-mm-dd的日期
样例输入
2010-07-05
样例输出
2010-07-06
提示
闰年的标准:
(1)普通年能被4整除且不能被100整除的为闰年。(如2004年就是闰年,1901年不是闰年)
地球公转示意图
(2)世纪年能被400整除的是闰年。(如2000年是闰年,1100年不是闰年)
输入语句scanf(“%d-%d-%d”,&y,&m,&d)可以存储年,月,日.输出语句格式类似printf(“%d-%02d-%02d\n”,year,month,day).
源码中写了两种方法,屏蔽的那种是从网上抄的,相对更好些。
源码
// #include<stdio.h>
// int main(void) {// int year, month, day;
// int dayTable[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 isLeapYear, daysOfMonth;
// scanf("%d-%d-%d", &year, &month, &day);
// isLeapYear = (year % 4 == 0 && year % 100 != 0)|| (year %400 == 0);
// daysOfMonth = dayTable[isLeapYear][month];
// ++day;
// if(day > daysOfMonth) {// day = 1;
// ++month;
// }
// if(month > 12) {// month = 1;
// ++year;
// }
// printf("%d-%02d-%02d\n", year, month, day);
// return 0;
// }#include <stdio.h> //注意此头文件一定要写对,否则提交出错int main(){int year=0,month=0,day=0;scanf("%d-%d-%d", &year, &month, &day);bool leapyear = (year % 4 == 0 && year % 100 != 0) || (year % 400 ==0);switch(month){case 1:case 3:case 5:case 7:case 8:case 10:if (day == 31){month++;day = 1;} else{day++;}break;case 12:if (day == 31){year++;month = 1;day = 1;} else{day++;}break;case 2:if (leapyear){if (day == 29){month ++;day = 1;}else{day++;}} else{if (day == 28){month ++;day = 1;}else{day++;}}break;case 4:case 6:case 9:case 11:if (day == 30){month++;day = 1;} else{day++;}break;default:break;}printf("%d-%02d-%02d\n", year, month, day);return 0;}
Tomorrow never knows?(C程序设计进阶第2周)相关推荐
- 递归习题—排队游戏(C程序设计进阶 第3周)
编程题#3:排队游戏 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 在幼儿 ...
- Tomorrow never knows? (C程序设计进阶 第2周)
编程题#4:Tomorrow never knows? 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限 ...
- 流感传染(C程序设计进阶第2周)
问题描述 有一批易感人群住在网格状的宿舍区内,宿舍区为n*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着.在第一天,有些房间里的人得了流感,以后每天,得流感的人会使其邻居传染上流感,(已经得 ...
- 文字排版(C程序设计进阶第5周)
问题描述 给一段英文短文,单词之间以空格分隔(每个单词包括其前后紧邻的标点符号).请将短文重新排版,要求如下: 每行不超过80个字符:每个单词居于同一行上:在同一行的单词之间以一个空格分隔:行首和行尾 ...
- [.net 面向对象程序设计进阶] (18) 多线程(Multithreading)(三) 利用多线程提高程序性能(下)...
[.net 面向对象程序设计进阶] (18) 多线程(Multithreading)(二) 利用多线程提高程序性能(下) 本节导读: 上节说了线程同步中使用线程锁和线程通知的方式来处理资源共享问题,这 ...
- c语言程序设计指针进阶,C语言及程序设计进阶例程-15 指向结构体的指针
贺老师教学链接 C语言及程序设计进阶 本课讲解 指向结构体变量的指针的应用 #include #include struct Student { int num; char name[12]; ch ...
- C语言及程序设计进阶例程-32 位运算及其应用
贺老师教学链接 C语言及程序设计进阶 本课讲解 位运算 #include <stdio.h> int main() {unsigned short int n = 3;int i;for( ...
- [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用
[.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用 本节导读:讨论了表达式树的定义和解析之后,我们知道了表达式树就是并非可执行代码,而是将表达式对象化后的数据结构.是 ...
- C语言及程序设计进阶例程-17 认识链表
贺老师教学链接 C语言及程序设计进阶 本课讲解 例 建立并输出一个简单链表 #include <stdio.h> struct Student {int num;float score; ...
最新文章
- 自然语言处理NLP基本知识小结
- 控制发送的请求条数_一个 HTTP 请求的曲折经历
- 十个提高编码技能的诀窍,你掌握了几个?
- 【深圳(活动)】70多场干货分享!价值899元的2018中国开源年会门票等你认领
- 飞鸽传书官方网站 2012 最新源码公开
- 如何在 Java 中正确使用 wait, notify 和 notifyAll?
- 90期:我在系统设计上犯过的14个错
- Python的一些用法分享
- JAVA ajax搜索框_JAVAEE AJAX实现搜素框关键字提示语功能
- java javah_Javah 常见错误记录
- 威斯康星麦迪逊计算机专业排名,威斯康星大学麦迪逊分校计算机工程学科排名...
- C语言const用法详解
- 工作过程中积累的书签(链接)
- Win11系统保护怎么关闭?Win11系统保护关闭方法
- Leetcode Proble 汇总四
- java-初识大前端Node.js、ES6、Npm、Babel、模块化规范、WebPack、Vue-element-admin本地安装问题及解决、Git安装及配置、uni-app
- yandex浏览器_15分钟内制作自己的文本编辑器:Yandex的实践
- Altium Designer中如何把贴片元器件放在底层?
- codeforces 750A New Year and Hurry
- 条码管理系统,助力企业打造轻量级数字化车间