2014.05.30 武汉华科大活

题目:(原题不记得,大概回忆)用户输入一个时间,输出下一个时间

这个小题看似不难,实际处理起来对date的处理稍微繁琐,每月有30,31,28,29(闰年的判断)天四种可能

判定闰年:当不能被100整除且能被4整除时, 或能被400整除,为闰年

关键是如何让写出的代码规范且反应思路清晰,目前的代码见后文

当时居然没有意识到要用类,真是太菜了,没关系还不晚

虽然不难但比较繁琐,想要在笔试时用20~30分钟,在一张单面A4纸上,完整清晰的实现,

就需要思路很清晰不能大片修改,也没办法像上机一样调试,还是有难度的

自己写了时钟类,和++操作符重载,代码+测试结果如下:

//DataClock.h
#pragma once //2014.05.30百田笔试过这个题
#include <iostream>
using namespace std; class DataClock{
public:
//Clock(int hour=0, int min=0, int sec=0); //默认值???
DataClock(int cYear, int cMonth, int cDate, int cHour, int cMin, int cSec);
void showTime();
bool ifLeapYear(int y);
int howManyDays(int m, int y);
//bool ifThirtyDays(int m);
//bool ifThirtyOneDays(int m); void operator ++();//前置没有形参(可看做默认的规矩??)
//void operator ++(int t);
private:
int year; int month; int date;
int hour; int min; int sec;
};
//DataClock.cpp实现
#include "DataClock.h" DataClock::DataClock(int cYear, int cMonth, int cDate, int cHour, int cMin, int cSec){
int thisMonDays = howManyDays(cMonth, cYear); //这里带哦用方法对么??
if(<=cYear && <cMonth && cMonth<= && <cDate && cDate<=thisMonDays
&& <=cHour && cHour< && <=cMin && < && <=cSec&&cSec<) {
year=cYear; month=cMonth; date=cDate;
hour = cHour; min = cMin; sec = cSec;
}else
cout << "time error!" <<endl;
} void DataClock::showTime(){
cout <<year<<"/"<<month<<"/"<<date<<" " <<hour <<":" <<min << " " <<sec<<"s" <<endl;
} int DataClock::howManyDays(int m, int y){
int days;
if (m==||m==||m==||m==||m==||m==||m==)
days=;
else if(m!=)
days=;
else if(ifLeapYear(y))
days=;
else
days=; return days;
} bool DataClock::ifLeapYear(int year){
if((year%!= && year%==) || year%==)//如果尾数不是00,且能被4整除
return true;
else
return false;
} void DataClock::operator ++(){
++sec; if (sec>=){
sec = sec-;
min++;
if(min>=){
min = min-;
hour++;
if(hour>=){
hour = hour-; //这里相对 hour-24的优势是???
date++;
int thisMonDays = howManyDays(month, year);
if(date> thisMonDays){
date = date-thisMonDays;
month++;
if(month>){
month=month-;
year++;
}
}
}
}
}
}
//年月日 时分秒 测试
void DataClockTest(){
int y,m,d,h,min,s;
cout << "请输入年月日时分秒共六个数:";
cin >>y>>m>>d>> h >> min >>s;
DataClock myTime(y, m, d, h, min, s);
cout<<"输入时间是:";
myTime.showTime();
++myTime;
cout << " 下一秒是:" ;
myTime.showTime();
}

DIY时钟类--广州百田笔试之一的更多相关文章

  1. 笔试总结篇(一) : 广州X公司笔试

    一.单选题: Ps : 当时由于去广州路上颠簸很困,导致刚做几分钟题目就睡了一觉.起来发现20分钟过去了.擦擦! 1. 假设磁盘文件foobar.txt 由 6个ASCII 码字符“foobar” 组 ...

  2. java 学习(day2) 时钟类

    看过python的面向对象,所以入手java总的来说还是比较快的. 看视频学习之后写了一个简单的时钟 一个时钟有两部分组成小时和分钟.再大一些还有月,日. 分析一下就是,上述这些属性到达一个值之后,就 ...

  3. 编写Java应用程序。首先,定义一个时钟类——Clock,它包括三个int型 成员变量分别表示时、分、秒,一个构造方法用于对三个成员变量(时、分、秒) 进行初始化,还有一个成员方法show()用于显示时钟对象的时间。其次,再定义 一个主类——TestClass,在主类的main方法中创建多个时钟类的对象,使用这 些对象调用方法show()来显示时钟的时间。

    package com.hanqi.test; public class Clock { int hh; int mm; int ss; String time; Clock(int h,int m, ...

  4. 4.编写Java应用程序。首先,定义一个时钟类——Clock,它包括三个int型 成员变量分别表示时、分、秒,一个构造方法用于对三个成员变量(时、分、秒) 进行初始化,还有一个成员方法show()用于显示时钟对象的时间。其次,再定义 一个主类——TestClass,在主类的main方法中创建多个时钟类的对象,使用这 些对象调用方法show()来显示时钟的时间。

    Clock package com.hanqi.test; public class Clock { int hour,minute,second; Clock(int h,int m,int s) ...

  5. 【Flash 插件】时钟类插件

    1.honehone_clock人体时钟实现 原理:就是在网页上播放已写好的.SWF文件. 效果如下: 效果一:背景透明,推荐为白色或浅背景 效果二:背景白色,推荐黑色或深色背景 实现步骤: 先引用 ...

  6. 定义一个时钟类——Clock,它包括三个int型 成员变量分别表示时、分、秒,一个构造方法用于对三个成员变量(时、分、秒) 进行初始化,还有一个成员方法show()用于显示时钟对象的时间。其次,再定义 一个主类——TestClass,在主类的main方法中创建多个时钟类的对象,使用这 些对象调用方法show()来显示时钟的时间

    package java1; public class Clock { int hhh; int mmm; int sss; Clock(int h,int m,int s) { hhh=h; mmm ...

  7. [java面试]宇信易诚 广州分公司 java笔试题目回忆录

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/28479895 作者:sushengmiyan -------------------- ...

  8. [java面试]宇信易诚 广州分公司 java笔试题目回顾录

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/28479895 作者:sushengmiyan -------------------- ...

  9. css3clock.js - 一个用CSS3与纯js实现的简单时钟

    前言 项目代码明细可以查看我Github上的源码:https://github.com/nelsonkuang/css3clock.js 实现思路 主要是用CSS3控制时针.分针和秒针旋转:时针每12 ...

随机推荐

  1. Javascript之简单按钮搜索功能

    学习JavaScript我觉得真实的感觉就是可以任意设计,“没有做不到只有想不到!”即使简单,但是任何东西的复杂都是从简单.基础开始的!这是我自己做的一个超简单的"搜索引擎"按钮, ...

  2. C#中Excel的导入和导出的几种基本方式

    在上一篇(http://www.cnblogs.com/fengchengjushi/p/3369386.html)介绍过,Excel也是数据持久化的一种实现方式.在C#中.我们常常会与Excel文件 ...

  3. 委托[delegate]_C#

    委托(delegate): 委托声明定义了一种类型,它用一组特定的参数以及返回类型来封装方法.对于静态方法,委托对象封装要调用的方法.对于实例方法,委托对象同时封装一个实例和该实例上的一个方法.如果您 ...

  4. (转)Redis复制与可扩展集群搭建

    讨论了Redis的常用数据类型与存储机制,本文会讨论一下Redis的复制功能以及Redis复制机制本身的优缺点以及集群搭建问题. Redis复制流程概述 Redis的复制功能是完全建立在之前我们讨论过 ...

  5. 方法:Linux 下用JAVA获取CPU、内存、磁盘的系统资源信息

    CPU使用率: InputStream is = null; InputStreamReader isr = null; BufferedReader brStat = null; StringTok ...

  6. SQL语句基本概念

    星期五 2014年11月21日 SQL语句:     sql语句用于检索维护数据库中的数据                   [ create alter Select update        ...

  7. linux 常用软件安装-目录

    nginx apache php mysql oracle tomcat memcached mongodb sqlserver

  8. java集合的互转

    List<-->数组.List<-->Set.数组<-->Set.Map将键转化为Set.Map将值转化为Set.Map将值转化为List等集合常 public c ...

  9. gets--vs--fgets

    gets  fget的区别 这两个函数都能从标准的输入流中读取信息,比如从键盘中输入信息,但是有些区别.   使用gets当输入的字符多于预定个数时候,会造成溢出,程序报错. int main(int ...

  10. 修正 phpcmsv9 VIP过期日期为1970

    打开 phpcms/modules/member/member.php 找到 $form_overdudate = form::date('info[overduedate]', date('Y-m- ...